【发布时间】:2015-04-14 00:16:24
【问题描述】:
我遇到了正则表达式区分大小写的问题。在正则表达式中,只有第一项在方括号内有效。
create table
(
FlowerId varchar(7)
constraint chk_flid_regex
check(ActorId like'[A-Z][a-z][A-Z]' collate sql_latin1_general_CP1_CS_AS)
);
例如。如果我给这样的东西 '[A-Z][a-z][A-Z]' 服务器只检查第一个 [A-Z]。第三个 [A-Z] 未选中。
因此,如果我插入诸如“Abc”之类的值,则它实际上不应该插入到表中。然而,它没有给出任何错误。它应该只接受像“AbC”这样的字符。
【问题讨论】:
-
这有点时髦。我原以为区分大小写的排序规则会使它起作用。您也可以这样做的另一种方法是对您关心的三个字符建立一个检查语句,并确保它们分别在允许的字符范围内。类似 ascii(substring(actorId, 1, 1)) 的东西在 97 到 122 之间
标签: sql-server tsql case-sensitive sql-like check-constraints