"Christmas - the time to fix the computers of your loved ones" « Lord Wyrm

Using WHERE clause for a VARCHAR () FOR BIT DATA column

daisho 13.01.2021 - 09:25 3510 3
Posts

daisho

SHODAN
Avatar
Registered: Nov 2002
Location: 4C4
Posts: 19689
Ich bastle mir gerade ein query für eine DB2 Datenbank und in der WHERE Klausel befindet sich leider eine column die als VARCHAR () FOR BIT DATA abgespeichert ist. Die übliche String-Schreibweise funktioniert hier leider nicht.

z.B. SELECT * FROM schema.table WHERE content = '1000';

gibt kein Ergebnis, weil ein einfacher SELECT Output der column "content" in dem Beispiel "31 30 30 30 00" wäre (die letzte 00 ist nur ein termination byte).
Ich vermute man muss hier den Wert (z.B. hier 1000) irgendwie zu einem BIT DATA string casten o.Ä., hat da jemand eine einfache Lösung dafür bzw. korrekte Syntax? (bin leider nicht so der DB2 Profi ...)

murcielago

Dr. Doom
Avatar
Registered: Oct 2002
Location: *
Posts: 2689

MightyMaz

hat nun auch einen Titel
Registered: Feb 2003
Location: .de
Posts: 619
Vielleicht hilft das hier weiter:
https://bytes.com/topic/db2/answers...a-column-string

So weit ich es verstehe muss man wohl den Hex Wert erst konvertieren und dann wieder einfügen.
Bearbeitet von MightyMaz am 13.01.2021, 09:47

daisho

SHODAN
Avatar
Registered: Nov 2002
Location: 4C4
Posts: 19689
Das hat schon einmal weiter geholfen, gibt zumindest keine syntax errors.
Derzeit:
Code: SQL
SELECT * FROM schema.table WHERE content = CAST (1000 AS VARCHAR(100) FOR BIT DATA);

Allerdings gibt das keine Ergebnisse. Ich vermute der CAST erstellt hier vermutlich 31 30 30 30 aber macht keinen NULL-terminated string daraus (31 30 30 30 00; schlicht nach 10000 suchen bringt allerdings ebenfalls nichts weil das in hex "30" wäre und nicht "00" schätze ich einmal).
Kontakt | Unser Forum | Über overclockers.at | Impressum | Datenschutz