Как преобразовать SYS_GUID() в varchar?
В oracle 10g, как вы преобразовываете SYS_GUID() в varchar? Я пытаюсь что-то вроде:
select USER_GUID from user where email = '[email protected]'
Что возвращает бит RAW []. Можно ли использовать функцию для преобразования RAW в VARCHAR2 в инструкции SQL?
Ответы
Ответ 1
Не забывайте использовать HEXTORAW(varchar2)
при сравнении этого значения с столбцами RAW
.
Нет неявной перестановки от VARCHAR2
до RAW
. Это означает, что этот раздел:
WHERE raw_column = :varchar_value
будет явно преобразован в:
WHERE RAWTOHEX(raw_column) = :varchar_value
что делает невозможным использование индексов на raw_column
.
Использование:
WHERE raw_column = HEXTORAW(:varchar_value)
вместо.
Ответ 2
Используйте RAWTOHEX (USER_GUID).
Ответ 3
select RAWTOHEX(USER_GUID) from user where email = '[email protected]'
Ответ 4
Пожалуйста, не мо-1, если я ошибаюсь. Я перехожу из памяти, поэтому это выражение об отказе от ответственности.
TO_CHAR на самом деле отличается между SQL и PL/SQL.
В SQL TO_CHAR не берется сырьевое, как вы узнали.
В PL/SQL To_CHAR примет исходное значение.
Итак, если вы все равно работаете, иногда проще использовать переменную, но если вы просто используете SQL, переходите к другим ответам здесь.