Frage

Oracle 10g, wie konvertiere Sie SYS_GUID () in varchar? Ich versuche, so etwas wie:

select USER_GUID from user where email = 'user@example.com'

, die das RAW-byte [] zurückgibt. Ist es möglich, eine Funktion zu verwenden, um die RAW zu VARCHAR2 in der SQL-Anweisung zu konvertieren?

War es hilfreich?

Lösung

Vergessen Sie nicht, HEXTORAW(varchar2) zu verwenden, wenn Sie diesen Wert auf die RAW Spalt verglichen werden.

Es gibt keine implizite convesion von VARCHAR2 RAW. Das bedeutet, dass diese Klausel:

WHERE raw_column = :varchar_value

wird impicitly umgewandelt in:

WHERE RAWTOHEX(raw_column) = :varchar_value

, wodurch Indizes auf raw_column unbrauchbar.

Verwendung:

WHERE raw_column = HEXTORAW(:varchar_value)

statt.

Andere Tipps

Mit RAWTOHEX (USER_GUID).

select RAWTOHEX(USER_GUID) from user where email = 'user@example.com'

Bitte nicht mod-1, wenn ich falsch bin. Ich bin aus dem Gedächtnis gehen so ist dies eine Verzichtserklärung zu überprüfen.

TO_CHAR ist tatsächlich anders zwischen SQL und PL / SQL.

In SQL TO_CHAR keine rohen nehmen, wie Sie herausgefunden haben.

In PL / SQL TO_CHAR einen Rohwert nehmen.

Wenn Sie also in einem Verfahren sind sowieso, manchmal einfacher ist es, eine Variable zu verwenden, aber wenn Sie nur SQL verwenden, gehen Sie mit den anderen Antworten hier.

select CAST (USER_GUID AS VARCHAR2(100)) from user where email = 'user@example.com'

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top