oracle复合检查约束

时间:2011-04-03 05:48:35

标签: sql regex oracle check-constraints

假设我想在表格列中仅允许以数字开头并且不应包含“$”的字符串。该表上的检查约束如何?

4 个答案:

答案 0 :(得分:4)

假设Oracle 10g +,您可以在CHECK约束中使用Oracle的正则表达式功能:

ALTER TABLE YOUR_TABLE
ADD CONSTRAINT col_regx CHECK REGEXP_LIKE(column_name,'^[[:digit:]]{1}[^$]*$')); 

参考文献:

答案 1 :(得分:1)

听起来你需要使用Oracle的正则表达式。有关相应IF约束的语法要求的有用链接可以在下面找到

http://download.oracle.com/docs/cd/B19306_01/appdev.102/b14251/adfns_regexp.htm

答案 2 :(得分:0)

正则表达式看起来像^\d[^$]*$

我不认识甲骨文,所以请原谅我,如果这对你没有帮助。

答案 3 :(得分:0)

我会做像

这样的事情

ALTER TABLE YOUR_TABLE 添加CONSTRAINT col_regx CHECK('0'和'9'之间的substr(column_name,1,1)和column_name不像'%$%')

(未测试但可能比正则表达式更快)