案例中的TSql案例

Nat*_*Pet 3 sql t-sql sql-server sql-server-2008

我正在尝试在案例中的案例中在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 
Run Code Online (Sandbox Code Playgroud)

注意,我要执行的操作是在case语句中进行选择。

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

小智 5

根据您的示例,您可能想要使用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
Run Code Online (Sandbox Code Playgroud)

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