我为标题道歉 - 我正在努力想出更好的东西。
对此进行了一些研究并找到了一些close examples,但这并不是我需要的。
基本上我有一个包含两列的表,我想在某些条件下进行评估。第1列是一个也可以为null的标识符。第2列是SessionId,也可以更改。
主要是关闭column1,但是当column1为null时,我想改为关闭column2。上面链接的示例不会更改WHERE子句中正在计算的列,只会更改用于计算子句的值。
这是一些伪代码来说明我想要做的事情:
SELECT * FROM MyTable
WHERE
IF Column1 NOT NULL
Column1 = @myvariable1
ELSE
Column2 LIKE '%' + @myvariable2 + '%'
这样的事情是否可能?我可以根据其中一列的值来切换要在WHERE子句中计算的列吗?
我希望所有这些都有意义。
TIA
答案 0 :(得分:4)
您可以使用CASE
:
SELECT *
FROM MyTable
WHERE (CASE WHEN Column1 IS NOT NULL AND Column1 = @myvariable1 THEN 1
WHEN Column2 LIKE '%' + @myvariable2 + '%' THEN 1
ELSE 0
END) = 1;
答案 1 :(得分:1)
如果将@ myvariable1设置为null,则应在对where子句进行验证时检查Column1上是否可为空。
<img :src="'statics/icons/svg/color/' + symbol + '.svg'"/>
答案 2 :(得分:0)
WHERE Column1 = @myvariable1
OR ( Column1 IS NULL AND Column2 LIKE '%' + @myvariable2 + '%' )