我有一个查询,我需要在SQL Server中搜索字符串的数字部分。
在上面的数字列中,需要在查询中作为变量进行搜索。
通配符不起作用:
SELECT PK_Story
FROM Story
WHERE ProductId = @productParam
AND Number LIKE '%' + @numberParam + '%';
因为这也会返回132和232。
那么如何在' - '之后搜索特定的数字。正如您所看到的,由于前缀长度可变,我无法进行charindex。
答案 0 :(得分:1)
您可以使用substring
和charindex
组合来获得结果。
SELECT PK_Story
FROM Story
WHERE ProductId = @productParam
AND @numberParam like
'%' + case when charindex('-', Number) > 0
then substring(Number, charindex('-', Number) +1, len(Number)) + '%'
else Number
end + '%'
答案 1 :(得分:1)
LIKE '%-' + @numberParam
怎么样?
答案 2 :(得分:0)
这个怎么样
declare @My_Number as varchar(50)='8'
SELECT PK_Story
FROM Story
WHERE ProductId = @productParam
AND substring(Number, charindex('-', Number) +1, len(Number)) like
@My_Number +'%'
或者,如果想要平等
SELECT PK_Story
FROM Story
WHERE ProductId = @productParam
AND substring(Number, charindex('-', Number) +1, len(Number)) =
@My_Numbe