Проверьте значение GUID в столбце Oracle - PullRequest
3 голосов
/ 04 сентября 2011

Я храню GUID в столбце в таблице Oracle 10g. Тип данных столбца Varchar (2). Теперь я хочу проверить, являются ли значения в этом столбце действительными идентификаторами GUID.

Как я могу запросить в Oracle, чтобы проверить, являются ли значения действительными идентификаторами GUID?

Ответы [ 2 ]

3 голосов
/ 04 сентября 2011

Я взял тестовые образцы из здесь и регулярное выражение из здесь :

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 голосов
/ 04 сентября 2011

Полагаю, вы имеете в виду VARCHAR2.VARCHAR (2) будет очень коротким GUID.

Я бы не стал хранить эти значения в базе данных, а затем убедиться, что они правильные.Убедитесь, что они верны, затем сохраните их.Используйте проверочное ограничение или триггер.Таким образом, вы знаете, что в вашей базе данных хорошие данные.

...