守着星空守着你
And优先于Or所以即使a <=> a1 Or a2Where a And b与Where a1 Or a2 And b,因为这将被执行为Where a1 Or (a2 And b)为了使它们保持不变,您想要的是以下内容(使用括号覆盖优先级规则): Where (a1 Or a2) And b这里有一个例子来说明:Declare @x tinyInt = 1Declare @y tinyInt = 0Declare @z tinyInt = 0Select Case When @x=1 OR @y=1 And @z=1 Then 'T' Else 'F' End -- outputs
TSelect Case When (@x=1 OR @y=1) And @z=1 Then 'T' Else 'F' End -- outputs F对于那些喜欢查阅参考资料的人(按字母顺序排列):Microsoft Transact-sql运算符优先级Oracle MySQL 9操作符优先Oracle 10g条件优先级PostgreSQL运算符优先SQLite理解的SQL