我正在尝试在 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/