SQL - 如何根据参数使用Select

时间:2017-07-28 15:48:29

标签: sql-server if-statement parameter-passing

我在SQL Server存储过程中使用如下的where子句获得了sql语句:

Select (fields)
From Table
Where Testname like @SearchLetter + '%'

我需要检查参数@SearchLetter,如果它是"#",我需要让参数选择字段Testname开头的记录数字字段(0-9)

我尝试了几件事(如果/选择等),但我似乎无法得到我需要的东西。

任何人都知道如何做到这一点?

3 个答案:

答案 0 :(得分:1)

您可以使用

Where Testname like REPLACE(@SearchLetter, '#', '[0-9]') + '%'

假设字符串始终是一个字符(或者您总是希望在散列落入的任何地方进行此替换)否则使用CASE语句来检查是否完全相等。

Where Testname like 
 CASE WHEN @SearchLetter = '#' 
  THEN '[0-9]'
  ELSE @SearchLetter 
 END + '%'

答案 1 :(得分:1)

尝试

where Testname like case @SearchLetter
    when '#' then '[0-9]' + '%'
    else @Searchletter + '%' end

答案 2 :(得分:0)

最简单的方法是

|