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)
但它显示了印刷品中的所有字符串,而不是前两个字符串.如何解决这个问题.谢谢!
这不会考虑所有组合,但您可以检查.例如,如果字符串中有几个')'符号,它肯定会失败:
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
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)