为什么正则表达式在使用 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
支持正则表达式,这也很可能不会如您所愿。
我是 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
支持正则表达式,这也很可能不会如您所愿。