1

假设我想在表格列中只允许以数字开头且不应包含“$”的字符串。这张表上的检查约束是什么样子的?

4

4 回答 4

4

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

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

参考:

于 2011-04-03T06:01:18.923 回答
1

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

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

于 2011-04-03T05:56:30.523 回答
0

我会做类似的事情

ALTER TABLE YOUR_TABLE ADD CONSTRAINT col_regx CHECK (substr(column_name,1,1) between '0' and '9' and column_name not like '%$%')

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

于 2011-04-04T19:15:53.903 回答
0

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

我不了解 Oracle,如果这实际上对您没有帮助,请原谅我。

于 2011-04-03T05:54:06.623 回答