假设我想在表格列中仅允许以数字开头并且不应包含“$”的字符串。该表上的检查约束如何?
答案 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不像'%$%')
(未测试但可能比正则表达式更快)