其中较低(描述)如'%plum%'或'%chery%'||其中较低(描述)喜欢'%plum%'或更低(描述)喜欢'%cherry%'

  • 本文关键字:描述 喜欢 %plum% %cherry% %chery% mysql
  • 更新时间 :
  • 英文 :


这两者有什么不同?他们都可以运行没有错误,但给我不同的答案。以下是它们的完整代码:

SELECT DISTINCT winery
FROM winemag_p1
WHERE LOWER(description) LIKE '%plum%' OR '%chery%' OR '%rose%' OR '%hazelnut%'
ORDER BY winery
SELECT DISTINCT winery
FROM winemag_p1
WHERE LOWER(description) LIKE '%plum%'
or LOWER(description) LIKE '%cherry%'
or LOWER(description) LIKE '%rose%'
or LOWER(description) LIKE '%hazelnut%'
ORDER BY winery

OR在编程语言中不像在英语中那样分布。LIKE的优先级高于OR,因此第一个条件等价于

WHERE (LOWER(description) LIKE '%plum%') 
OR '%chery%' 
OR '%rose%' 
OR '%hazelnut%'

当您在OR中使用字面值字符串时,它被转换为数字;任何不以数字开头的字符串都被转换为0,因此它相当于

WHERE (LOWER(description) LIKE '%plum%') OR 0 OR 0 OR 0

在布尔上下文中,0FALSE,非零为TRUE。因此,由于anything OR FALSE等价于anything,最终结果是你的条件等价于

WHERE LOWER(description) LIKE '%plum%'

最新更新