我想在Oracle varchar列上强制执行检查约束,以便唯一有效的字符串由以下内容组成:
所以这些字符串是有效的:
这些都是无效的
我已经看过使用UDF执行此操作,如果使用正则表达式或者与TRANSLATE或类似版本进行某种抨击,我认为我更喜欢这样做。
有什么想法吗?
答案 0 :(得分:4)
尝试类似
的内容alter table TBL add constraint TBL_COL_FMT
check (regexp_like(COL, '^\d+(\.\d+)*$'));
其中正则表达式表示后跟一个或多个数字(\d+
)
由零个或多个单个点组和一个或多个数字((\.\d+)*
)。