mysql - MySQL where 条件只引用了一个列,是什么意思?
问题描述
例子:
SELECT *
FROM table t
WHERE t.col1
SELECT *
FROM table t
WHERE t.col1 AND t.col2
根据列的性质,这些查询的行为会有所不同。在我的测试中,如果该列是整数类型,则该列不会显示带有 0 或空值的行,如果它是字符串,则查询将不会给出任何结果。
我想了解这些类型的 where 条件意味着什么。在 MySQL 手册中找不到任何规范,也没有在线解释。
谢谢。
解决方案
这些只是不是正确的布尔表达式。布尔表达式的计算结果为真或假,例如,其形式where t.col1 = 0 and t.col2 >= 3
为。
您的语句有时会返回数据而有时不会返回数据的事实是因为 0 和 1 分别代表 false 和 true。
就像您已经观察到的那样,0 和 NULL 不会返回行,因为它们在 0 的情况下被视为假,而在 NULL 的情况下则不可比较。另一方面,字符串被隐式转换为数字。如果字符串以 0 以外的数字开头,则字符串将在 MySQL 中转换为该数字。如果字符串以除此之外的任何内容开头,则将其转换为 0。这就是您没有得到字符串结果的原因。
我建议不要使用这些“简写布尔表达式”。总是写正确的表达方式!
推荐阅读
- java - java的自动完成在atom中不起作用
- html - 如何在 Django 中应用这种风格?(无线电类型)
- c++ - 如何初始化不可复制的对象数据成员
- spring-boot - Spring数据Cassandra Rest Id必须可分配给Serializable!:null
- javascript - 如何在 ReactJS 中搜索特定数据
- javascript - 将多维数组转换为特定的字符串格式
- c - 将 C 字符数组转换为 Matlab 字符串 [Matlab 编码器]
- rstudio - 更改主题 rstudio 1.2 中的功能颜色
- html - CSS3 过渡只工作一次
- email - 从我的域中的电子邮件帐户发送的电子邮件到达垃圾邮件