¿Cómo convertir SYS_GUID () a varchar?
Pregunta
En Oracle 10g, ¿cómo convertir SYS_GUID () a varchar? Estoy intentando algo como:
select USER_GUID from user where email = 'user@example.com'
Que devuelve el byte RAW []. ¿Es posible usar una función para convertir RAW a VARCHAR2 en la declaración SQL?
Solución
No olvide utilizar HEXTORAW (varchar2)
cuando compare este valor con las columnas RAW
.
No hay una conversión implícita de VARCHAR2
a RAW
. Eso significa que esta cláusula:
WHERE raw_column = :varchar_value
se convertirá impíamente en:
WHERE RAWTOHEX(raw_column) = :varchar_value
, por lo tanto, los índices en raw_column
son inutilizables.
Uso:
WHERE raw_column = HEXTORAW(:varchar_value)
en su lugar.
Otros consejos
Use RAWTOHEX (USER_GUID).
select RAWTOHEX(USER_GUID) from user where email = 'user@example.com'
Por favor, no mod-1 si estoy equivocado. Me voy de memoria, así que esta es una exención de responsabilidad para verificar.
TO_CHAR es realmente diferente entre SQL y PL / SQL.
En SQL TO_CHAR no se procesa como lo has descubierto.
En PL / SQL To_CHAR tomará un valor en bruto.
Entonces, si estás en un procedimiento, a veces es más fácil usar una variable, pero si solo estás usando SQL, ve con las otras respuestas aquí.
seleccione CAST (USER_GUID AS VARCHAR2 (100)) del usuario donde correo electrónico = 'usuario@ejemplo.com'