WHERE子句中的SQL IF语句

dka*_*kae 1 sql if-statement

伪SQL:

SELECT * 
FROM table
WHERE(if var1=a then var2 must=b) 
AND (if var2=c then var3 must=d);
Run Code Online (Sandbox Code Playgroud)

该查询将返回与条件匹配的var1 = a和var2 = b的两行,以及var1!= a和var2!= c的所有行.

不使用IF,使用OR将忽略其中一个条件,并使用AND将强制执行每一行的所有条件.

Gor*_*off 5

您可以使用布尔逻辑执行此操作:

WHERE (var1 <> a or var2 = b) and
      (var2 <> c or var3 = d);
Run Code Online (Sandbox Code Playgroud)

可能需要一点时间来考虑为什么这是等价的,但这在逻辑上是等价的(假设值不是NULL).