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