SQL DB2 CHECK-CONSTRAINT PATTERN

时间:2017-11-25 20:25:39

标签: sql db2 check-constraints

我正在尝试编写一个只允许以下内容的约束模式:字符串如下:

  • '+ 55'
  • 一个空格
  • 120到150之间的数字
  • 一个空格
  • 7-9位。

我尝试了很多方法,但没有一种方法按照我希望的方式工作,最终做了类似的事情:

ALTER TABLE KUNDENKONTAKTDATEN
ADD CONSTRAINT 

VariableA_Check CHECK (
VariableA Like '+55 1[2-4][0-9] [0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9]'    
Or VariableA Like '+55 1[2-4][0-9] [0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9]'   
Or VariableA Like '+55 1[2-4][0-9] [0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9]'  
Or VariableA Like '+55 150 [0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9]'  
Or VariableA Like '+55 150 [0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9]'    
Or VariableA Like '+55 150 [0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9]'

不是很漂亮,但希望它会起作用。有什么建议? 谢谢!

1 个答案:

答案 0 :(得分:1)

如果您在Linux / Unix Windows上运行Db2版本11.1,请尝试以下操作:

create table tester (
 mycol varchar(50) constraint bad_value check  (regexp_like(mycol, '^\+55 (12[0-9]|13[0-9]|14[0-9]|150) [0-9]{8,10}$'))
);

您可以使用this website来测试并解释正则表达式。