Oracle检查约束以仅强制执行数字和句点

时间:2015-08-15 10:32:40

标签: oracle oracle11g

我想在Oracle varchar列上强制执行检查约束,以便唯一有效的字符串由以下内容组成:

  • 只是没有空格的整数或
  • 只是没有空格的整数,并且在某些整数之间有一个完整的句点

所以这些字符串是有效的:

  • 1
  • 12
  • 123
  • 1.2
  • 12.3
  • 1.2.3
  • 11.2.3
  • 11.52.3
  • 1.52.13

这些都是无效的

  • FOO
  • 1foo
  • 1.foo
  • 1 1
  • 0.1
  • 1
  • 1F1

我已经看过使用UDF执行此操作,如果使用正则表达式或者与TRANSLATE或类似版本进行某种抨击,我认为我更喜欢这样做。

有什么想法吗?

1 个答案:

答案 0 :(得分:4)

尝试类似

的内容
alter table TBL add constraint TBL_COL_FMT
  check (regexp_like(COL, '^\d+(\.\d+)*$'));

其中正则表达式表示后跟一个或多个数字(\d+) 由零个或多个单个点组和一个或多个数字((\.\d+)*)。