2009-03-02 4 views
12

oracle 10g에서 어떻게 SYS_GUID()를 varchar로 변환합니까? 나는 다음과 같은 것을 시도하고있다 :SYS_GUID()를 varchar로 어떻게 변환합니까?

RAW 바이트 []를 반환한다. SQL 문에서 RAW를 VARCHAR2로 변환하는 함수를 사용할 수 있습니까?

답변

17

이 값을 RAW 열과 비교할 때 HEXTORAW(varchar2)을 사용해야합니다.

VARCHAR2에서 RAW까지의 암시 적 검색이 없습니다. 따라서 사용할 raw_column에 인덱스를 만드는

WHERE RAWTOHEX(raw_column) = :varchar_value 

:

WHERE raw_column = :varchar_value 

impicitly으로 변환한다 : 즉,이 항을 의미한다.

사용 : 대신

WHERE raw_column = HEXTORAW(:varchar_value) 

.

4

RAWTOHEX (USER_GUID)을 사용하십시오.

1

내가 틀렸다면 mod-1을 사용하지 마십시오. 나는 이것을 기억할 것이므로 면책 조항을 확인하십시오.

TO_CHAR은 SQL과 PL/SQL간에 실제로 다릅니다.

SQL TO_CHAR에서는 사용자가 알 수있는 것처럼 원시를 취하지 않습니다.

PL/SQL에서 To_CHAR는 원시 값을 취합니다.

어쨌든 프로 시저를 사용하는 경우 변수를 사용하는 것이 더 쉽지만 SQL을 사용하는 경우 여기에서 다른 대답을 참조하십시오. SYS.STANDARD.TO_CHAR을 선택 듀얼 FROM (() SYS_GUID) :

+2

PL/SQL의 TO_CHAR()는 너무 SQL에서 사용할 수있는 사실 SYS.STANDARD.TO_CHAR()입니다. 물론 이것은 SQL/PLSQL 컨텍스트 전환과 적절한 성능 영향을 의미합니다. – Quassnoi

+0

OMG, 너무 멋지다. 나는 그것을 결코 상황화하지 않았다. mod + 1.1 –