2

我有 2 个可以运行的查询,并且会得到 2 个完全不同的结果,这仅仅是因为我使用了“横向单引号”而不是单引号。见下文:

SELECT * FROM items WHERE 'natural' IS NOT NULL

无论“自然”列是否设置为 NULL,都将返回每条记录

SELECT * FROM items WHERE `natural` IS NOT NULL

只会正确返回为“自然”列设置值的记录

那是不对的。

4

2 回答 2

9

您的第一个示例'natural' IS NOT NULL测试字符串文字'natural'是否不为空。由于字符串文字始终不为空,因此此条件将始终为真。

第二个示例测试 name 列的值natural。这就是你想要的。

有关的

字符串文字

字符串是由单引号 ( ') 或双引号 ( ") 字符括起来的字节或字符序列。

架构对象名称

标识符引号字符是反引号 ( ` )

于 2012-06-04T22:29:32.947 回答
0

是的,它的行为正确。 'natural'是一个字符串值,因此'natural' IS NOT NULL将始终评估为真。

于 2012-06-04T22:29:35.323 回答