假设我想创建表 ABC,其中有一列,即 UniqueAddress。
我希望它应该包含 30 个字符,其中只需要 5 个数字字符。
正确的查询是什么?
最佳答案
基于@Ben的回答,我会使用 REGEXP_REPLACE而不是所有的翻译和替换等。
alter table <table_name>
add constraint unique_address_chk
check ( LENGTH(REGEXP_REPLACE(unique_address, '[^0-9]+', '')) <= 5);
它更整洁,但完成相同的工作。
正则表达式有效地删除所有非数字字符,然后长度函数返回剩下的字符串(数字)的长度。
对于仅包含 30 个字符的列,您可以在创建该列时指定为 VARCHAR2(30 CHAR)
希望对你有帮助...
关于oracle - 如何对任何变量应用约束,使其在oracle中只需要5个数字字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9173123/