PL/SQL-Basis-Konvertierung ohne Funktionen
Gibt es eine Möglichkeit, zu konvertieren dezimal zu Binär oder Binär-zu-dezimal -, Oracle 10g, ohne zuerst eine Funktion definieren? Begrenzt habe ich den Datenbank-Zugriff (nur SELECT) und alle Lösungen die ich im Netz gefunden habe scheinen zu beteiligen CREATE FUNCTION
, die nicht für mich arbeiten.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Wenn hexadezimalen gut genug ist, dann TO_CHAR und TO_NUMBER arbeiten können:
Können Sie in der Lage zu verwenden, die
RAWTOHEX()
undHEXTORAW()
Funktionen, um die hex zu Binär-übergang als gut.Frank Zhou, spezialisiert in gnarly SQL-Teilnehmer ersonnen hat, eine Reine SQL-Lösung für dieses problem. Sie finden es auf seine OraQA Website. Aber seien Sie gewarnt: es ist wirklich gnarly.
update
Original-link zu OraQA ist gebrochen: Die Wayback Machine hat eine archivierte version hier.
Können Sie PL/SQL in einer SQLPlus-script wie dieses:
Ich bin mir nicht sicher, aber ich glaube nicht, dass die Funktion erstellt werden dauerhaft in der Datenbank, ich denke, es wird nur noch vorübergehend für die Dauer des Skripts, so dass diese könnte Arbeit. Es ist einen Versuch Wert, richtig? 😉
Oder wenn das nicht funktioniert, Sie konnte
SELECT ... from dual
zu konvertieren, obwohl das wahrscheinlich zu umständlich und funktioniert nur, wenn Sie wissen, die Anzahl der Ziffern, die - vielleicht (ich werde versuchen, werfen Sie es zusammen, wenn ich ein paar Minuten, und wenn es möglich ist).Einen rohen, aber straight-forward-Lösung für dezimal-zu-Binär:
Binär-zu-dezimal wäre schwieriger. Sie können möglicherweise verwenden Sie
connect by
split den string in 4-Zeichen-Segmente, konvertieren Sie Sie in eine ähnliche Mode, dann verketten Sie wieder zusammen (eine zweiteconnect by
mitSYS_CONNECT_BY_PATH
?), aber das ist ein wenig zu mühsam für mich zu arbeiten heute Abend.Auf den zweiten Gedanken, hier ist die Binär-zu-dezimal-Lösung (ich bin ein Sauger für
connect by
Probleme):Diese Lösung funktioniert nur für jeweils eine Zeile, wie Sie derzeit geschrieben. Zu machen, arbeiten mit mehreren Zeilen, würden Sie brauchen, um hinzuzufügen, eine Art eindeutige Kennung an die äußerste
connect by
.Habe ich versucht diese in Oracle mit
CONNECT BY
zu konvertieren dezimal zu Binär in eine einfacheSELECT
- Anweisung. Habe endlich die gewünschte Ausgabe. Sie können die unten, es ist in Ordnung.