Como você converter SYS_GUID () para varchar?
Pergunta
No Oracle 10g, como você converter SYS_GUID () para varchar? Eu estou tentando algo como:
select USER_GUID from user where email = 'user@example.com'
Que retorna o byte RAW []. É possível utilizar uma função para converter o RAW para VARCHAR2 na instrução SQL?
Solução
Não se esqueça de uso HEXTORAW(varchar2)
quando se compara esse valor para as colunas RAW
.
Não há convesion implícita de VARCHAR2
para RAW
. Isso significa que esta cláusula:
WHERE raw_column = :varchar_value
será impicitly convertido em:
WHERE RAWTOHEX(raw_column) = :varchar_value
, tornando assim os índices de raw_column
inutilizável.
Use:
WHERE raw_column = HEXTORAW(:varchar_value)
em seu lugar.
Outras dicas
Use RAWTOHEX (USER_GUID).
select RAWTOHEX(USER_GUID) from user where email = 'user@example.com'
Por favor, não mod-1 se eu estiver errado. Vou a partir da memória de modo que este um aviso para verificar.
TO_CHAR é realmente diferente entre SQL e PL / SQL.
No SQL TO_CHAR não tomar uma matéria como você descobriu.
Em PL / SQL TO_CHAR terá um valor bruto.
Então, se você estiver em um procedimento de qualquer maneira, às vezes é mais fácil de usar uma variável, mas se você está apenas usando SQL, vai com as outras respostas aqui.
select CAST (USER_GUID AS VARCHAR2(100)) from user where email = 'user@example.com'