Sql server SQL Server tsql括号逻辑?
(动态查询…)Sql server SQL Server tsql括号逻辑?,sql-server,tsql,logic,Sql Server,Tsql,Logic,(动态查询…) 从myTable中选择*,其中 (否。您需要这些,但您可以删除语句中周围的 select * from myTable where (@param1 IS NULL OR @param1 IN (SELECT item FROM blabla1)) and (@param2 IS NULL OR @param2 IN (SELECT item FROM blabla2)) 如果您删除了您询问的内容,您将得到一个如下的查询 select * from myTab
从myTable中选择*,其中
(否。您需要这些,但您可以删除
语句中周围的
select *
from myTable
where
(@param1 IS NULL OR @param1 IN (SELECT item FROM blabla1))
and
(@param2 IS NULL OR @param2 IN (SELECT item FROM blabla2))
如果您删除了您询问的内容,您将得到一个如下的查询
select *
from myTable
where
param1 IS NULL
OR
(param1 IN (SELECT item FROM blabla1)) and param2 IS NULL
OR
(param2 IN (SELECT item FROM blabla2))
不需要。您需要这些,但可以删除
语句中周围的
select *
from myTable
where
(@param1 IS NULL OR @param1 IN (SELECT item FROM blabla1))
and
(@param2 IS NULL OR @param2 IN (SELECT item FROM blabla2))
如果您删除了您询问的内容,您将得到一个如下的查询
select *
from myTable
where
param1 IS NULL
OR
(param1 IN (SELECT item FROM blabla1)) and param2 IS NULL
OR
(param2 IN (SELECT item FROM blabla2))
不,您不能删除它们。如果我们删除这些括号,它将影响逻辑。不,您不能删除它们。如果我们删除这些括号,它将影响逻辑。@MikaelEriksson是正确的,结果将不一样,因为AND运算符的优先级高于OR运算符()
在您的示例中,不是(A或A')和(B或B')
,而是A或(A'和B)或B'
@MikaelEriksson是正确的,结果将不一样,因为and运算符的优先级高于or运算符()
在您的示例中,将得到A或A')和(B或B')
,而不是A或(A'和B)或者B'
与在逻辑中出错相比,使用不必要的括号和更可读/可理解的逻辑更好。您可能会建议自己,逻辑操作顺序的工作方式与MSSQL的工作方式不同。与在逻辑中出错相比,使用不必要的括号和更可读/可理解的逻辑更好G告诉你自己,逻辑运算的顺序实际上比MSSQL的工作方式不同。