Tre*_*Tzu 3 regex t-sql check-constraints sql-server-2008
我试图拒绝不是格式为"03 xxxx xxxx"的所有输入,所以我创建了一个像这样的表
create table records
(
....
num varchar(255) NOT NULL,
...
CONSTRAINT num_check CHECK (num like '03 [0-9]{4} [0-9]{4}')
)
Run Code Online (Sandbox Code Playgroud)
应该(我认为?)接受例如"03 1234 1234".但是,如果我尝试通过sql管理器添加此消息,则会收到错误消息:"INSERT语句与CHECK约束冲突"num_check""
起初我认为我的正则表达式已关闭,但我在其他几个地方尝试过,它接受上面的例子.有任何想法吗?
like不使用正则表达式的工作,它有自己的,更简单的通配符模式,只支持%,_,[a-z],和[^a-z].而已.{4}就像大多数正则表达式功能一样,它不会起作用.
你应该可以使用:
like '03 [0-9][0-9][0-9][0-9] [0-9][0-9][0-9][0-9]'
Run Code Online (Sandbox Code Playgroud)
另一种选择,重复性稍差:
declare @digitChar nvarchar(12)
set @digitChar = '[0-9]'
Run Code Online (Sandbox Code Playgroud)
Where子句:
like '03 ' + replicate(@digitChar,4) + ' ' + replicate(@digitChar,4)
Run Code Online (Sandbox Code Playgroud)
示例:http://sqlfiddle.com/#!3/d41d8/3251
| 归档时间: |
|
| 查看次数: |
3539 次 |
| 最近记录: |