【发布时间】:2012-08-13 13:41:24
【问题描述】:
我试图拒绝所有不是格式“03 xxxx xxxx”的输入,所以我创建了一个类似的表格
create table records
(
....
num varchar(255) NOT NULL,
...
CONSTRAINT num_check CHECK (num like '03 [0-9]{4} [0-9]{4}')
)
应该(我认为?)接受例如“03 1234 1234”。但是如果我尝试通过 sql manager 添加它,我会收到一条错误消息: "INSERT 语句与 CHECK 约束 "num_check" 冲突"
起初我以为我的 Regex 已关闭,但我在其他几个地方尝试过,它接受了上面的示例。 有什么想法吗?
【问题讨论】:
-
据我所知,如果不使用 CLR 程序集,您无法在 SQL Server 中实现正则表达式。它不像 Oracle 那样支持本地正则表达式……除非我的记忆力让我失望。
-
我正在关注我在这里看到的一些东西。 dbforums.com/microsoft-sql-server/…
-
到目前为止,我只找到了一个支持 posix 正则表达式约束的 DBE,它是 Oracle(参考:stackoverflow.com/questions/35157662/…)。 MS SQL 和 DB2 看起来它们有自己的通配符变体,这是不幸的,因为您失去了层之间约束的一致性:(
-
DBA 网站上的相关 QA...dba.stackexchange.com/q/266438/3690
标签: regex sql-server-2008 tsql check-constraints