Ganymed Geschrieben 11. Juni 2004 Geschrieben 11. Juni 2004 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 glaub ich nicht, dass das das Richtige (3mal das??? ) 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
johnhaltonx Geschrieben 11. Juni 2004 Geschrieben 11. Juni 2004 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
Ganymed Geschrieben 14. Juni 2004 Autor Geschrieben 14. Juni 2004 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...
mme Geschrieben 14. Juni 2004 Geschrieben 14. Juni 2004 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???
Ganymed Geschrieben 14. Juni 2004 Autor Geschrieben 14. Juni 2004 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.
mme Geschrieben 14. Juni 2004 Geschrieben 14. Juni 2004 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
Ganymed Geschrieben 14. Juni 2004 Autor Geschrieben 14. Juni 2004 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!
Ganymed Geschrieben 14. Juni 2004 Autor Geschrieben 14. Juni 2004 Ich nochmal... Wie mache ich aus dem Wert wieder eine Binär-Zahl?
Gast Geschrieben 14. Juni 2004 Geschrieben 14. Juni 2004 bin mir da nicht sicher aber vielleicht so: NUM_TO_BIN(Wert) ? oder lieg ich da total falsch *kopfkratz*
Ganymed Geschrieben 14. Juni 2004 Autor Geschrieben 14. Juni 2004 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
Gast Geschrieben 14. Juni 2004 Geschrieben 14. Juni 2004 naja hätte ja sein können ich schau mal weiter vielleicht find ich ja was dazu *suchen geht*
Empfohlene Beiträge
Erstelle ein Benutzerkonto oder melde Dich an, um zu kommentieren
Du musst ein Benutzerkonto haben, um einen Kommentar verfassen zu können
Benutzerkonto erstellen
Neues Benutzerkonto für unsere Community erstellen. Es ist einfach!
Neues Benutzerkonto erstellenAnmelden
Du hast bereits ein Benutzerkonto? Melde Dich hier an.
Jetzt anmelden