[NEWSboard IBMi Forum]

Hybrid View

  1. #1
    Registriert seit
    Nov 2005
    Beiträge
    3

    Bitmaskierung über SQL in DB2

    in MySQL existiert die Funktion "&", mit der festgestellt werden kann, ob ein bestimmtes Bit einer Integerzahl gesetzt ist; z.B. mit x&power(2,4)=power(2,4) kann man feststellen, ob Bit 4 gesetzt ist, wobei x eine Integerzahl ist. Gibt es in DB2 eine entsprechende Funktion bzw. wie könnte man dies anders erledigen?

  2. #2
    Registriert seit
    Feb 2001
    Beiträge
    20.695
    LAND(MYVAR, X'0080') = X'0080'
    Dienstleistungen? Die gibt es hier: http://www.fuerchau.de
    Das Excel-AddIn: https://www.ftsolutions.de/index.php/downloads
    BI? Da war doch noch was: http://www.ftsolutions.de

  3. #3
    Registriert seit
    Nov 2005
    Beiträge
    3
    Mit "LAND" werden Strings verarbeitet; ich habe jedoch Integer- bzw. gezonte Zahlen. Was bedeutet in diesem Zusammenhang X'0080'?

  4. #4
    Registriert seit
    Feb 2001
    Beiträge
    20.695
    mit LAND kann jedes Feld verknüpft werden.
    X'....' bezeichnet eine Hex-Konstante, in diesem Fall X'0080' = Bit 4 an, alle anderen aus.
    Die X-Konstante muss allerdings so lang sein, wie das zu verknüpfende Feld. Ggf. ist links also mit Nullen aufzufüllen.
    Belegt dein Feld z.B. 4 Byte, so ist mit X'00000080' zu verknüpfen.
    Dienstleistungen? Die gibt es hier: http://www.fuerchau.de
    Das Excel-AddIn: https://www.ftsolutions.de/index.php/downloads
    BI? Da war doch noch was: http://www.ftsolutions.de

  5. #5
    Registriert seit
    Nov 2005
    Beiträge
    3
    vielen Dank für die Erläuterung;
    aber mein SQL-Select bringt mir hier:
    "Argument 1 der Funktion LAND ungültig" ...
    und Argument 1 ist wie gesagt mit 20,0 numerisch gezont definiert.
    Und ist Hex'0080' bei einem 2-Byte-Wort nicht Bit 8?
    Oder stehe ich auf der Leitung?
    Nochmals Dankeschön vorab für diese Klärung.

  6. #6
    Registriert seit
    Feb 2001
    Beiträge
    20.695
    Die IBM-Speicherung speichert HIWORD, LOWORD, HIBYTE, LOBYTE und nicht wie Intel-CPU's in LOxxx, HIxxx.
    Kann sein, dass LAND erst ab V5R3 auch numerische Felder erlaubt.
    Du kannst aber auch mit LAND(HEX(MYFIELD), '0080') verknüpfen. Das Ganze wird dann halt als Zeichenkette betrachtet, funktioniert aber ebenso.
    Probier's einfach mal mit

    select HEX(MYFIELD), LAND(HEX(MYFIELD), '00000000000000000080')
    from ...
    Dienstleistungen? Die gibt es hier: http://www.fuerchau.de
    Das Excel-AddIn: https://www.ftsolutions.de/index.php/downloads
    BI? Da war doch noch was: http://www.ftsolutions.de

Similar Threads

  1. RPGLE - SQL
    By christian_lettner in forum NEWSboard Programmierung
    Antworten: 2
    Letzter Beitrag: 16-11-06, 10:15
  2. SQL - Fehler
    By Kaufmann in forum IBM i Hauptforum
    Antworten: 11
    Letzter Beitrag: 28-06-06, 14:11
  3. SQL .. for update of (RPG embedded SQL)
    By loeweadolf in forum NEWSboard Programmierung
    Antworten: 2
    Letzter Beitrag: 01-06-06, 09:43
  4. DB2 400 SQL Join Problem
    By pfpk0997 in forum IBM i Hauptforum
    Antworten: 1
    Letzter Beitrag: 28-02-06, 18:39
  5. per SQL aus ILE COBOL in DB2 schreiben?
    By rebe in forum NEWSboard Programmierung
    Antworten: 5
    Letzter Beitrag: 24-03-05, 14:36

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • You may not post attachments
  • You may not edit your posts
  •