Zum Inhalt springen

Binäre Zahlen in Oracle


Ganymed

Empfohlene Beiträge

Hallo zusammen,

ich würde gerne wissen, ob es eine Kovertierungsfunktion in Oracle PL/SQL gibt, die mir aus einem String eine Binäre Zahl macht.

Hab da was mit toraw gefunden, aber ich habs a) nicht verstanden und B) glaub ich nicht, dass das das Richtige (3mal das??? :D) ist.

Hintergrund ist folgender:

Ich habe Felder auf der Datenbank, die entweder 0 oder 1 sein können.

Diese Felder müsste ich mit einer String-Funktion zusammensetzen (soweit kein Problem).

Da ich aber mit diesen Strings rechnen muss, müsste ich daraus "echte" Binär-Zahlen machen.

Gibt es da etwas standardmäßiges? Oder brauch ich dafür ein Package?

Gruß

Ganymed

Link zu diesem Kommentar
Auf anderen Seiten teilen

SCHEELEC@AZUBIDB.WORLD> create table bin (bin clob);

Table created.

Elapsed: 00:00:00.00

SCHEELEC@AZUBIDB.WORLD> insert into bin values ('0001111001000101');

1 row created.

Elapsed: 00:00:00.00

SCHEELEC@AZUBIDB.WORLD> commit;

Commit complete.

Elapsed: 00:00:00.00

SCHEELEC@AZUBIDB.WORLD> select * from bin;

BIN

-----------------------------------------------------------------------0001111001000101

Elapsed: 00:00:00.00

SCHEELEC@AZUBIDB.WORLD> spool off

Der Datentyp clob nimmt binärdaten auf, das zusammensetzen geschieht ja im PL/SQL, und wenn der string in ein bin#är-feld gespeichert wird mach oracle eine implizite Konversion, sofern die datentypen passen. Abewr ich glaube ich hab nicht so ganz verstanden was du genau machen willst. Siehe thread mit dem datumsproblem: poste doch einfach mal den codeausschnitt, vielleicht wirds dann klarer.

Achja die Datenbank version ist 8.1.7.4 im Beispiel

Link zu diesem Kommentar
Auf anderen Seiten teilen

SCHEELEC@AZUBIDB.WORLD> create table bin (bin clob);

Table created.

Elapsed: 00:00:00.00

SCHEELEC@AZUBIDB.WORLD> insert into bin values ('0001111001000101');

1 row created.

Elapsed: 00:00:00.00

SCHEELEC@AZUBIDB.WORLD> commit;

Commit complete.

Elapsed: 00:00:00.00

SCHEELEC@AZUBIDB.WORLD> select * from bin;

BIN

-----------------------------------------------------------------------0001111001000101

Elapsed: 00:00:00.00

SCHEELEC@AZUBIDB.WORLD> spool off

Sorry, aber irgendwie kapier ich das nicht...

Das einzige was ich machen möchte ist einen String in eine Binärzahl umzuwandeln mit Hilfe von PL/SQL...

Das hat mit meinem anderen Thread nichts zu tun...

Link zu diesem Kommentar
Auf anderen Seiten teilen

wenn du einen String hast in dem nur Zahlen drinstehen, und du rechnest das mit, wird das doch automatischum gesetzt...

Das hier dürfte doch das gleiche sein....

select '222' + 2 from dual;

select to_number('222') + 2 from dual;

Und zum zusammen setzen nimmst du das hier:

select 1 || 2 from dual;

Was ist dein Problem???

Link zu diesem Kommentar
Auf anderen Seiten teilen

wenn du einen String hast in dem nur Zahlen drinstehen, und du rechnest das mit, wird das doch automatischum gesetzt...

Das hier dürfte doch das gleiche sein....

select '222' + 2 from dual;

select to_number('222') + 2 from dual;

Und zum zusammen setzen nimmst du das hier:

select 1 || 2 from dual;

Was ist dein Problem???

Der macht das alleine? Wußt ich gar nicht.

Normalerweise muss man doch, wenn man mit Zahlen rechnen will z.B. to_number(String) eingeben, um das Ganze umzuwandeln.

Wenn ich das nicht mache, bekomme ich einen Kompilierungsfehler...

Beispiel:

Ich habe den String, der sich so zusammensetzt:"0"||"1"||"1"||"0"||"0"||"1"

--> "011001"

Wenn ich daraus nun eine Dezimalzahl haben möchte (25), dann macht er das einfach so?

Kann ich gar nicht glauben...

Deswegen ahlt die Frage, obs dafür so eine Funktion wie to_number gibt.

Link zu diesem Kommentar
Auf anderen Seiten teilen

Sorry, jetzt habe ich dein Problem erst verstanden....

Hier die Lösung....

select BIN_TO_NUM(0,1,1,0,0,1) from dual;

Du must komma getrennte Binärzahlen übergeben.... Keine Strings....

Meintest du das???

Grüße mme

Oh danke! *freu* :e@sy

Ich hab mich schon halb tot gegoogelt und meine Bücher hier haben mir auch nichts gesagt. Immer nur rawtohex und sowas!

Vielen vielen Dank!

Genau das, was ich brauchte!

Link zu diesem Kommentar
Auf anderen Seiten teilen

Dein Kommentar

Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung wiederherstellen

  Nur 75 Emojis sind erlaubt.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...