在sql server中检查以数字和')'开头的字符串

pal*_*aѕн 3 sql sql-server sql-server-2008

我有一些字符串

2) Some text
34) Some text more
5 Some other text
Run Code Online (Sandbox Code Playgroud)

我需要找出某些文本是否以模式开头一些数字(不固定)后跟一个右括号')'

我试过了:

If (PATINDEX('[^a-zA-Z]%', @myString) > 0)
begin
    print @myString
end
Run Code Online (Sandbox Code Playgroud)

但它显示了印刷品中的所有字符串,而不是前两个字符串.如何解决这个问题.谢谢!

Gio*_*uri 5

这不会考虑所有组合,但您可以检查.例如,如果字符串中有几个')'符号,它肯定会失败:

select * from t
where s like '[0-9]%)%' and s not like '[0-9]%[^0-9]%)%'
Run Code Online (Sandbox Code Playgroud)

在这里小提琴http://sqlfiddle.com/#!3/3b5fd/3


Dav*_*idG 5

SQL Server没有很好的模式匹配,但是如果你知道前面的数字)总是小于500,你可以这样做:

DECLARE @myString VARCHAR(100) = '266) Some text'

If (PATINDEX('[0-9])%', @myString) > 0) OR         --Check for one digit
   (PATINDEX('[0-9][0-9])%', @myString) > 0) OR    --Check for two digits
   (PATINDEX('[0-9][0-9][0-9])%', @myString) > 0) --Check for three digits
begin
    print @myString
end
Run Code Online (Sandbox Code Playgroud)