以下是我的代码中的内联查询的伪代码:
select columnOne
from myTable
where columnOne = '#variableOne#'
if len(variableTwo) gt 0
and columnTwo = '#variableTwo#'
end
我想将其移至存储过程中,但无法正确构建查询。我认为它会像
select columnOne
from myTable
where columnOne = @variableOne
CASE
WHEN len(@variableTwo) <> 0 THEN and columnTwo = @variableTwo
END
这给了我一个语法错误。
有人能告诉我我的错误。
另外,我想将它保留为只有一个查询而不只是一个if语句。另外,我不想在存储过程中构建sql并在其上运行Exec()
。
答案 0 :(得分:4)
切换你的逻辑,你就可以得到你想要的结果。
select columnOne
from myTable
where columnOne = @variableOne
and (len(@variableTwo) = 0 or columnTwo = @variableTwo)