【问题标题】:SQL - How can I use a Select based on the parameterSQL - 我如何使用基于参数的选择
【发布时间】:2017-07-28 15:48:29
【问题描述】:

我在 SQL Server 存储过程中使用了这样的 where 子句的 sql 语句:

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

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

我已经尝试了几件事(ifs/selects 等),但我似乎无法得到我需要的东西。

有人知道我该怎么做吗?

【问题讨论】:

  • 添加样本数据和预期结果..

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


【解决方案1】:

试试

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

【讨论】:

    【解决方案2】:

    你可以使用

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

    假设字符串始终是一个字符(或者您总是希望这种替换发生在散列所在的任何位置)否则使用CASE 语句来检查是否完全相等。

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

    【讨论】:

      【解决方案3】:

      最简单的方法是

      where left(@SearchLetter, 1) between '0' and '9
      

      【讨论】:

      • 这是测试变量的第一个字母。他们想测试以变量值为条件的列的第一个字母。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-08-24
      • 2013-05-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多