Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql “=”是什么意思_Sql_Sql Server - Fatal编程技术网

Sql “=”是什么意思

Sql “=”是什么意思,sql,sql-server,Sql,Sql Server,此语句检索表中的所有员工 我不明白=是怎么解释的?你能解释一下吗?=总是正确的,因为它比较两个空字符串 所以本质上=是一个重言式,而且你在使用OR条件,因此你的整个条件总是正确的。你的WHERE也可以这样写 select * from Employees where Name = 'John' or ''='' 您的查询只能从员工中选择*,因为WHERE条件无效。这是一个毫无意义的WHERE子句,因为它正在搜索具有以下内容的名称: where Name = 'John' or 1 = 1 但

此语句检索表中的所有员工

我不明白=是怎么解释的?你能解释一下吗?

=总是正确的,因为它比较两个空字符串

所以本质上=是一个重言式,而且你在使用OR条件,因此你的整个条件总是正确的。你的WHERE也可以这样写

select * from Employees where Name = 'John' or ''=''
您的查询只能从员工中选择*,因为WHERE条件无效。

这是一个毫无意义的WHERE子句,因为它正在搜索具有以下内容的名称:

where Name = 'John' or 1 = 1
但它也使用始终返回true的表达式进行搜索:

where Name = 'John'
因此,所有数据都将返回

应该没有理由包含第二部分,除非这个where子句是在某处动态生成的,并且名称过滤器是可选的。如果未筛选名称,则包含“始终为真”部分将防止出现错误。尽管如此,我还是会质疑它的使用,因为它会返回额外的数据

如果它是生成的where子句,并且是必需的,那么执行以下操作可能更符合逻辑:

or '' = ''

那么您就不会返回额外的数据。

等于?,答案是肯定的,因为条件是OR,所以整个WHERE是true,我只是搜索了一些困难的东西。这很简单。我看不出重点。谢谢你的好球。如果有人无意中发现了这一点,那么并非所有数据库都是如此——在Oracle中也并非如此。@GordonLinoff,这一点很奇怪,但在SQL Server中总是如此
or 1=2