sql - TSql 案例中的案例

标签 sql sql-server sql-server-2008 tsql

我正在尝试在 tsql 中使用一个案例中的一个案例做一个选择语句。首先是基于 SearchField 是什么。接下来我需要基于SearchOper来做。

    declare @searchField varchar(50)  
    declare @searchString varchar(50)
    declare @searchOper varchar(50)

    case @searchField
     when 'CompanyName' then
        case @searchOper
          when 'eq' then
            select * from tbl1 where CompanyName = @searchString
         when 'ne' then 
           select * from tbl1 where CompanyName <> @searchString
         end
     when 'StoreNum' then
        case @searchOper
          when 'eq' then
             select * from tbl1 where StoreNum = @searchString
          when  'ne' then
             select * from tbl1 where StoreNum <> @searchString
        end 
     end 

请注意,我正在尝试做的是在 case 语句中进行选择。

我收到一条消息,指出关键字“case”附近的语法不正确。

最佳答案

根据您的示例,您可能希望使用 IF 语句(这里是 ELSE 的示例,但您也可以多次使用 IF 和 ELSE IF):

declare @searchField varchar(50)  
declare @searchString varchar(50)
declare @searchOper varchar(50)

IF @searchField='CompanyName'
BEGIN
    IF @searchOper='eq'
    BEGIN
        select * from tbl1 where CompanyName = @searchString
    END
    ELSE
    BEGIN
        select * from tbl1 where CompanyName <> @searchString
    END
END
ELSE 
BEGIN
    IF @searchOper='eq'
    BEGIN
        select * from tbl1 where StoreNum = @searchString
    END
    ELSE
        select * from tbl1 where StoreNum <> @searchString
    END
END

CASE 非常相似,但更适合与内联语句一起使用(即 SELECT CASE 1=1 THEN 'a' ELSE 'b' END)。

关于sql - TSql 案例中的案例,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12792020/

相关文章:

java - Spring boot 执行没有错误,但是,没有在服务器上创建表

sql - Access 2007 查询错误地返回零记录

java - hibernate 到 MSSQL 服务器连接被拒绝 : connect

sql - 将默认值传递给表值参数 - SQL Server

sql-server - SSIS 中 bool 值的问题

sql - 在特定条件下防止 null

php - 从具有关系的表中检索帖子标签

MySql 删除具有重复列的行

sql - 计算两点之间的距离时出现轻微不一致

sql - 动态链接服务器查询