SQL Server:此SQL语句如何工作

sojim2

请说明该SQL语句如何选择所有column1值。

所以我有参数值A,B和*

如果我通过了,@brand = '*'则此语句返回中的所有值column1

SELECT * 
FROM TABLE 
WHERE (column1 = @brand OR @brand = '*')

我在想,什么时候@brand = '*'将其赋@brandTRUE,所以incolumn1中将是什么true,所以这就是为什么它返回in中的所有值的原因。column1

如果我通过了,A那么它将仅返回A值,如果是,B返回B值。

鲁斯兰

您的假设是正确的。WHERE根据最简单的路径顺序评估语句中的子句

因此,由于存在一个OR,因此它首先对@brand ='*'子句求值如果产生TRUE,则该WHERE子句满足,并且不进行进一步的比较。

如果产生FALSE,则对表达式中的另一个子句求值column1 = @brand

但是,我应该注意,这不是在SQL中执行此操作的正确方法,因为SQL Server不能保证短路或逻辑子句的执行顺序。在您的情况下,它只是以这种方式起作用,但不能保证。您应该将WHERE子句更改为如下形式:

((@brand = '*') OR (@brand <> '*' AND column1 = @brand))

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

此执行语句在SQL Server 2012中的工作方式

来自分类Dev

此SQL注入如何工作?需要说明

来自分类Dev

如果语句在SQL Server查询中无法正常工作

来自分类Dev

我如何在mongodb中表达此sql语句

来自分类Dev

EXISTS子句在SQL Server中如何工作?

来自分类Dev

SQL Server Management Studio说此语句不正确

来自分类Dev

此递归SQL CTE如何工作?

来自分类Dev

SQL select语句如何工作

来自分类Dev

如何使此查询递归Sql Server?

来自分类Dev

带AND的SQL Server OR语句

来自分类Dev

如何在SQL Server中编写此sql查询?

来自分类Dev

如何编写此特定的sql语句

来自分类Dev

SQL Server语句

来自分类Dev

SQL Server:如何在insert语句中使用if语句

来自分类Dev

如何提高此SQL Server查询的性能?

来自分类Dev

如何提高此SQL语句的效率?

来自分类Dev

Coalesce如何在SQL Server中工作?

来自分类Dev

我如何在mongodb中表达此sql语句

来自分类Dev

如何为FluentPDO代码转换此SQL语句

来自分类Dev

此SQL TO_CHAR函数如何工作?

来自分类Dev

如何使SQL语句(查询)在SQL Server 2012中预编译

来自分类Dev

SQL Server返回语句

来自分类Dev

如何更改此SQL查询以在MS Access查询中工作?

来自分类Dev

如何修复MS Access的此SQL SELECT语句

来自分类Dev

如何编写此 SQL Server 查询?

来自分类Dev

如何在 SQL Server 中加入这个 Sql 语句

来自分类Dev

SQL Server 变量如何工作?

来自分类Dev

如何修复此 SQL Server 错误?

来自分类Dev

如何使用 UNION ALL 语句修复此 SQL?