Veröffentlicht 11. Juni 200421 j 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
11. Juni 200421 j 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
14. Juni 200421 j 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...
14. Juni 200421 j 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???
14. Juni 200421 j 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.
14. Juni 200421 j 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
14. Juni 200421 j 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!
14. Juni 200421 j bin mir da nicht sicher aber vielleicht so: NUM_TO_BIN(Wert) ? oder lieg ich da total falsch *kopfkratz*
14. Juni 200421 j 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
14. Juni 200421 j 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.