如何在Microsoft SQL Server中检索包含4个数字的行?
此查询返回超过4个数字的字符串
SELECT *
FROM table
WHERE Name LIKE '%[0-9][0-9][0-9][0-9]%';
答案 0 :(得分:0)
SQL Server在字符串操作方面特别糟糕,可能是为了推广Microsoft的客户端工具,如C#或Reporting Server。请参阅示例this question from 2009。因此,理智的解决方案涉及创建CLR UDF。
但你仍然可以在T-SQL中用很多技巧来做。例如,您可以创建一个用户定义的函数来删除字符串中的所有数字:
create function dbo.StripNumbers(@str nvarchar(max))
returns nvarchar(max)
as begin
declare @i int = patindex('%[0-9]%', @str)
while @i > 0
begin
set @str = stuff(@str, @i, 1, '')
set @i = patindex('%[0-9]%', @str)
end
return @str
end
然后你可以过滤掉剥离后短4个字符的字符串:
select *
from YourTable
where len(dbo.StripNumbers(txt)) = len(txt) - 4
答案 1 :(得分:0)
您可以使用通配符:
select *
from Table
where Name like '%[0-9]%[0-9]%[0-9]%[0-9]%'
and Name not like '%[0-9]%[0-9]%[0-9]%[0-9]%[0-9]%'