Вопрос

Как в oracle 10g преобразовать SYS_GUID() в varchar?Я пытаюсь что-то вроде:

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

Возвращает байт RAW[].Можно ли использовать функцию для преобразования RAW в VARCHAR2 в инструкции SQL?

Это было полезно?

Решение

Не забудьте использовать HEXTORAW(varchar2) при сравнении этого значения с RAW столбцы.

Неявного преобразования из VARCHAR2 к RAW.Это означает, что этот пункт:

WHERE raw_column = :varchar_value

будет неявно преобразовано в:

WHERE RAWTOHEX(raw_column) = :varchar_value

, таким образом создавая индексы на raw_column непригодный.

Использовать:

WHERE raw_column = HEXTORAW(:varchar_value)

вместо.

Другие советы

Используйте RAWTOHEX(USER_GUID).

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

Пожалуйста, не мод-1, если я ошибаюсь.Я исхожу из памяти, так что это заявление об отказе от ответственности, которое нужно проверить.

TO_CHAR на самом деле различается между SQL и PL/SQL.

Как вы узнали, в SQL TO_CHAR не принимает необработанные данные.

В PL/SQL To_CHAR принимает необработанное значение.

Так что, если вы все равно находитесь в процедуре, иногда проще использовать переменную, но если вы просто используете SQL, перейдите к другим ответам здесь.

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top