oracle - 如何对任何变量应用约束,使其在oracle中只需要5个数字字符

标签 oracle

假设我想创建表 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/

相关文章:

sql - Hibernate 创建标准两次连接同一个表 - 尝试了 2 种方法,但有 2 个差异错误

oracle - 如何将文件复制到虚拟盒oracle盒中

ASP.NET 网络应用程序 - ORA-12154 : TNS:could not resolve the connect identifier specified

java - 面对事务时使用 "last modified"时间戳同步 Oracle 数据库

javascript - "Set Value"没有正确更改项目

php - 创建哈希以与 Oracle DBMS_UTILITY.get_hash_value 匹配

sql - 通过复制行和更改表结构从现有表创建新 View

用于批量插入语句的 oracle Alter Session NLS FORMAT - 未按预期运行

oracle - 使用 Microsoft System.Data.OracleClient 进行休眠

sql - 如何以线性方式将 IN 子句中的值列表与另一个 IN 子句进行匹配