2011-09-04 3 views
2

Oracle 10g 테이블의 열에 GUID를 저장합니다. 열의 데이터 유형은 Varchar (2)입니다. 이제이 열의 값이 유효한 GUID인지 확인하고 싶습니다.Oracle 열의 GUID 값 확인

값이 유효한 GUID인지 확인하기 위해 Oracle에서 어떻게 쿼리 할 수 ​​있습니까?

+0

, 나는 당신에게 문제를 저장하고 아니, 그들은 유효하지 않은 사실을 말해주지 . –

+0

칼럼의 길이가 나쁘다. 200이다. – acadia

답변

2

나는 here에서 테스트 샘플을 찍은 및 here에서 정규 표현식 : GUID를 2 자보다 더 큰 고려

create table guids (guid varchar(36)); 
insert into guids values ('BC1EAAAF-1B5A-4695-9797-3ED6C99B7FC5'); 
insert into guids values ('BCXXAAAF-1B5A-4695-9797-3EDXXXXXXFC5'); 
insert into guids values ('-jk1029347 lka llur 193241 lk;qed'); 

select guid, 
    case when regexp_like(guid, 
'^({|\()?[A-Fa-f0-9]{8}-([A-Fa-f0-9]{4}-){3}[A-Fa-f0-9]{12}(}|\))?$' 
    ) 
    then 'Y' 
    else 'N' 
    end AS is_valid 
from guids; 

GUID         IS_VALID 
------------------------------------ -------- 
BC1EAAAF-1B5A-4695-9797-3ED6C99B7FC5 Y   
BCXXAAAF-1B5A-4695-9797-3EDXXXXXXFC5 N   
-jk1029347 lka llur 193241 lk;qed N   
0

나는 VARCHAR2를 의미한다고 가정합니다. VARCHAR (2)는 매우 짧은 GUID입니다.

나는이 값을 데이터베이스에 저장하지 않고 올바른지 확인합니다. 그들이 맞는지 확인한 다음 저장하십시오. 점검 제한 조건 또는 트리거를 사용하십시오. 그렇게하면 데이터베이스에있는 것이 좋은 데이터라는 것을 알 수 있습니다.