Ganymed Geschrieben 11. Juni 2004 Teilen 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 Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
johnhaltonx Geschrieben 11. Juni 2004 Teilen 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 Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Ganymed Geschrieben 14. Juni 2004 Autor Teilen 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... Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
mme Geschrieben 14. Juni 2004 Teilen 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??? Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Ganymed Geschrieben 14. Juni 2004 Autor Teilen 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. Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
mme Geschrieben 14. Juni 2004 Teilen 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 Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Ganymed Geschrieben 14. Juni 2004 Autor Teilen 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! Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Ganymed Geschrieben 14. Juni 2004 Autor Teilen Geschrieben 14. Juni 2004 Ich nochmal... Wie mache ich aus dem Wert wieder eine Binär-Zahl? Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Gast Geschrieben 14. Juni 2004 Teilen Geschrieben 14. Juni 2004 bin mir da nicht sicher aber vielleicht so: NUM_TO_BIN(Wert) ? oder lieg ich da total falsch *kopfkratz* Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Ganymed Geschrieben 14. Juni 2004 Autor Teilen 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 Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Gast Geschrieben 14. Juni 2004 Teilen Geschrieben 14. Juni 2004 naja hätte ja sein können ich schau mal weiter vielleicht find ich ja was dazu *suchen geht* Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Empfohlene Beiträge
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.