سؤال

في أوراكل 10g، كيف يمكن تحويل SYS_GUID () لVARCHAR؟ أحاول شيئا مثل:

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

والتي ترجع بايت RAW []. هل من الممكن استخدام وظيفة لتحويل RAW إلى VARCHAR2 في بيان SQL؟

هل كانت مفيدة؟

المحلول

لا تنس أن تستخدم HEXTORAW(varchar2) عند مقارنة هذه القيمة إلى الأعمدة RAW.

وليس هناك convesion ضمني من VARCHAR2 إلى RAW. وهذا يعني أن هذا الشرط:

WHERE raw_column = :varchar_value

وسيتم تحويل impicitly إلى:

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