为什么正则表达式在使用 like 的 sql 服务器 select 语句中不起作用

Why regular expression not working in sql server select statement using like

我是 sql-server 的新手,我尝试 select 所有以 AB 开头后跟 1、2 或 3 的记录 digits.I 尝试了以下查询,但它不是在职的。如果我删除 * 则它会起作用,但会跳过包含 1 位和 2 位数字的记录。我正在使用 SQL-Server 2012。请帮忙!

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

这样试试:

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服务器支持limited pattern matching

您还可以检查 Working with Regular Expressions 这将帮助您通过 CLR 使用正则表达式

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

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


也就是说,即使在正则表达式中 AB[0-9]*[0-9]*[0-9]* 也没有意义。
[0-9]*[0-9]*[0-9]* 等同于 [0-9]*,换句话说,即使 LIKE 支持正则表达式,这也很可能不会如您所愿。