aji*_*nmu 3 sql t-sql sql-server-2005
我必须根据条件运行SQL查询.只有满足它们的if条件时,才需要执行2个AND条件.我们可以在这里使用CASE声明吗?如果是这样的话?还是有其他方法??
SELECT * FROM MyTable
WHERE col1=@val1
if condition1 here
AND col2 = @val2
end if
if condition2 here
AND col3 = @val3
end if
Run Code Online (Sandbox Code Playgroud)
请有人帮我这个.我正在使用sql server 2005.
在您的查询中包含它们,如下所示:
SELECT * FROM MyTable
WHERE col1=@val1
And (Not Condition1 Or col2 = @val2)
And (Not Condition2 Or col3 = @val3)
Run Code Online (Sandbox Code Playgroud)
所以,如果Not Not Condition1(意思是:Condition1为真)那么col2(必须)= @ val2.
(我将第二个条件逻辑更改为AND col3 = @ val3,因为您重复了AND col2 = @ val2)
编辑以回应评论:给我一个条件1条件的例子.如果在t-sql中的查询中没有使用语法,则显式.假设第一个重要标准,"之前的订单"必须小于20,并且...如果没有名字,第二个标准就是重要的.它是:
SELECT * FROM MyTable
WHERE col1=@val1
And (MyTable.OrderCount > 19 Or col2 = @val2)
And ((Not MyTable.FirstName Is Null) Or col3 = @val3)
Run Code Online (Sandbox Code Playgroud)
不要以这个为例来考虑这个问题"如果这种情况属实,这个标准很重要".所有重要的因素都会进入where子句.您必须了解Or/And/Not和操作顺序.这需要练习才能变得更好.如果你需要思考几分钟,不要担心,有时候我们其他人也会这样.