Проверьте значение GUID в столбце Oracle
Я храню GUID в столбце в таблице оракула 10g. Тип данных столбца - Varchar(2). Теперь я хочу проверить, являются ли значения в этом столбце действительными идентификаторами GUID.
Как я могу запросить в Oracle, чтобы проверить, являются ли значения действительными идентификаторами 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
Я полагаю, вы имеете в виду VARCHAR2. VARCHAR(2) будет очень коротким GUID.
Я бы не стал хранить эти значения в базе данных, а затем убедиться, что они правильные. Убедитесь, что они верны, затем сохраните их. Используйте проверочное ограничение или триггер. Таким образом, вы знаете, что в вашей базе данных хорошие данные.