当我搜索以一个或两个数字结尾的字符串时,我使用以下模式:
WHERE MyString LIKE 'ABC[0-9]'
OR MyString LIKE 'ABC[0-9][0-9]'
有没有办法用一个单一的等效模式表达我的意图?
答案 0 :(得分:2)
答案 1 :(得分:1)
您可以使用regular expressions with SQLServer。
然后你的表达式会变成:
where dbo.RegexMatch( MyString, N'^ABC[0-9]{1,2}$' )
答案 2 :(得分:1)
一种方法,虽然2 ORs
没有太大问题(删除'??' +
以跳过只 1或2位数的值)
;with T(f) as (
select 'xxxxxxxxx' union
select 'xxxxxxxx6' union
select 'xxxxxxx66' union
select 'xxxxxx666' union
select 'xxxxx6666' union
select 'xxxxx666x' union
select '66' union
select '6' union
select ''
)
select
*
from
T
where
patindex('%[^0-9]%', reverse(right('??' + f, 3))) > 1
>>
f
6
66
xxxxxxx66
xxxxxxxx6
答案 3 :(得分:1)
这样的事情怎么样?
WHERE SUBSTRING(MyString, 4, 2) NOT LIKE '%[^0-9]%'