为什么正则表达式不能在sql server select语句中使用like

时间:2015-04-09 11:56:47

标签: sql-server regex azure-sql-database

我是sql-server的新手,我尝试选择所有以AB开头,后跟1,2或3位数的记录。我尝试了以下查询,但它无效。如果我删除*而不是它的工作但跳过1和2位数的记录。我正在使用SQL-Server 2012.请帮忙!

select userid from registrations 
where userid like 'AB[0-9]*[0-9]*[0-9]*'

2 个答案:

答案 0 :(得分:3)

试试这样:

select userid from registrations 
where userid like 'AB[0-9][0-9][0-9]' 
or userid like 'AB[0-9][0-9]' or userid like 'AB[0-9]'

请注意,SQL Server支持limited pattern matching

您还可以查看Working with Regular Expressions,它将帮助您通过CLR使用Regex

答案 1 :(得分:3)

简单回答:LIKE模式不是正则表达式。

模式语法为described in the docs。没有量词。


话虽如此,即使在正则表达式中 AB[0-9]*[0-9]*[0-9]*也没有意义。
[0-9]*[0-9]*[0-9]*相当于[0-9]*,换句话说,即使LIKE支持正则表达式,这很可能不会达到您想要的效果。