字母和数字的 HSQL 查询约束

Posted

技术标签:

【中文标题】字母和数字的 HSQL 查询约束【英文标题】:HSQL Query constraint for alphabets and numbers 【发布时间】:2015-11-14 04:02:16 【问题描述】:

我如何有一列 Firstname 应该只有 Alphabets 和电话号码,应该只是 HSQL 中的数字

我写了类似的东西

ALTER TABLE USER 
ADD CONSTRAINT CHECK_USER_FIRST_NAME CHECK (FIRST_NAME  NOT LIKE '%[^A-Z ]%' )

但它允许Tp1 我不想要。 有人可以帮我解决 HSQL 中的限制

【问题讨论】:

它应该可以工作demo。尝试引用标识符CREATE TABLE "User" ...ALTER TABLE "User"...。还分享有关默认 COLATION 的信息 @lad2025:不,它不起作用。 SQL LIKE 运算符不支持“范围”或正则表达式(SQL Server 的 T-SQL 与此不同 - 但不支持 real 正则表达式) 【参考方案1】:

LIKE 不支持正则表达式。它支持的唯一通配符是% 用于多个字符,_ 用于单个字符。要匹配正则表达式,您需要 regexp_matches()

ALTER TABLE user 
   ADD CONSTRAINT check_user_first_name 
   CHECK (regexp_matches(first_name, '[A-Z]+'))

这将只允许大写字母,因此您可能想改用'[A-Za-z]+'。它还要求名称中至少包含一个字符。如果要允许空字符串,请将@​​987654328@ 更改为*。不过,这仍然允许空值。


请注意,USER 是 SQL 中的保留关键字。您不应该使用该名称创建表。如果你试试这个,例如在 Oracle 或 PostgreSQL 上它将失败。该名称需要被引用 - 这不是一个好主意。您应该找到一个不同的名称。

【讨论】:

以上是关于字母和数字的 HSQL 查询约束的主要内容,如果未能解决你的问题,请参考以下文章

如何在数组数据类型的元素上添加外键约束

如何在 C++ 中使用约束满足来实现密码算法

第七章

用表组织数据

用表组织数据

用表组织数据