SQL Abfragen (Binärzahlen)

Hallo,
ich habe eine Oracle Datenbank und hab ein paar Probleme
1.)
was mein erstes Problem ist, eine Zahl in eine Binärzahl umzuwandeln, das heißt:
37 -> 100101

2.)
das zweite Problem was ich habe ist, ist das ich mehrere Zahlen habe, sie dann in Binäre Zahlen umwandle und damit Fehler-Abfragen mache. Ich zeig mal ein Beispiel so kann ich es denk ich besser erklären.

F6 F5 F4 F3 F2 Fehler1
37 -> 1 0 0 1 0 1
5 -> 0 0 0 1 0 1
22 -> 0 1 0 1 1 0

Überall wo eine 1 steht heißt Fehler.
Die Abfrage soll so aussehen z.B.:
Zeige mir die Zahl, überall wo an der 3 und 1 Stelle ein Fehler ist an (als Decimal).
Das heisst bei unserem Beispiel, die 37 und 5.

Ich weiss nicht wie ich anfgangen soll, könnte mir jemand beim Code helfen?

Danke im voraus

Mahlzeit,

1.)
was mein erstes Problem ist, eine Zahl in eine Binärzahl
umzuwandeln, das heißt:
37 -> 100101

Dazu schau Dir folgendes Beispiel an: http://www.oracle.com/technology/oramag/code/tips200…

2.)
das zweite Problem was ich habe ist, ist das ich mehrere
Zahlen habe, sie dann in Binäre Zahlen umwandle und damit
Fehler-Abfragen mache.

Das läßt sich einfach mit dem Bitand-Operator erledigen. Zunächst mußt Du wissen, welche Bits Du vergleichen willst und diese als Dezimalzahl ausdrücken, in Deinem Fall das 1. und 3. -> Dezimal 5:

sql> select bitand(37, 5) from dual;
-> ergibt 5

sql> select bitand(5, 5) from dual;
-> ergibt 5

sql> select bitand(38, 5) from dual;
-> ergibt 4

Um all Deine Werte aus einer Tabelle herauszufinden, deren 1. und 3. Bit gesetzt ist, steckst Du das in die WHERE-Klausel:

sql> select MeineSpalte as Fehler from MeineTabelle where bitand(MeineSpalte, 5) = 5;
-> selektiert nur die 37 und die 5, nicht aber die 42, die 38 und die 9.

Ich würde aber Dir davon abraten, die Dinge so zu lösen. Die Logik ist nicht durchschaubar und für einen Dritten kaum zu pflegen, und außerdem fehleranfällig. In einer relationalen Datenbank speicherst Du Deine Informationen nicht binär kodiert, sondern verteilt auf einzelne Spalten, die Du unabhängig voneinander belegen und abfragen kannst, etwa:

sql> select * from MeineTabelle where Fehler1 = ‚1‘ and Fehler3 = ‚1‘;

Gruß

Sancho

Vielen Danke schonmal für die Super Hilfe.
Ich werde dann mal gleich versuchen deine Idee umzusetzen ^^

Für weiter Vorschläge bin ich immer noch offen xD