Zum Inhalt springen
View in the app

A better way to browse. Learn more.

Fachinformatiker.de

A full-screen app on your home screen with push notifications, badges and more.

To install this app on iOS and iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
To install this app on Android
  1. Tap the 3-dot menu (⋮) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.

Binäre Zahlen in Oracle

Empfohlene Antworten

Veröffentlicht

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

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

  • Autor
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...

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???

  • Autor
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.

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

  • Autor
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!

bin mir da nicht sicher aber vielleicht so:

NUM_TO_BIN(Wert) ?

oder lieg ich da total falsch *kopfkratz*

  • Autor
bin mir da nicht sicher aber vielleicht so:

NUM_TO_BIN(Wert) ?

oder lieg ich da total falsch *kopfkratz*

;) Hehe... da hab ich auch schon nach gegoogelt.

Es gibt anscheinend nichts, was das rückgängig macht.

Intelligent.

Benutze Oracle 9i. Vielleicht hat wer einen Ansatz :D

naja hätte ja sein können ;)

ich schau mal weiter vielleicht find ich ja was dazu

*suchen geht*

Archiv

Dieses Thema wurde archiviert und kann nicht mehr beantwortet werden.

Configure browser push notifications

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.