字母和数字的 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 查询约束的主要内容,如果未能解决你的问题,请参考以下文章