基于VARCHAR列

时间:2015-09-16 18:43:50

标签: sql sql-server

我有一个查询,我需要在SQL Server中搜索字符串的数字部分。

enter image description here

在上面的数字列中,需要在查询中作为变量进行搜索。

通配符不起作用:

SELECT PK_Story 
FROM Story 
WHERE ProductId = @productParam 
  AND Number LIKE '%' + @numberParam + '%';

因为这也会返回132和232。

那么如何在' - '之后搜索特定的数字。正如您所看到的,由于前缀长度可变,我无法进行charindex。

3 个答案:

答案 0 :(得分:1)

您可以使用substringcharindex组合来获得结果。

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