mysql - 为什么数学运算符与sql中的字符串交互

标签 mysql operators

假设我使用 sql 查询:

select * from table t where t.name = "adam" and t.age > 10;

在“年龄”列中,不仅仅有整数值。还有“老”、“年轻”等值...

此查询的结果将是所有年龄超过 10 岁的 adam,但也包括所有年龄等于字符串值“old”、“young”等之一的 adam...

这是为什么?

最佳答案

此行为的原因是 MySQL Type Conversion 当您将运算符应用于不同类型的数据/列时,这会隐式发生。

对于您发布的示例:通常认为在同一字段中保存不同类型/含义的数据是不好的做法。

我将“age”列的类型设置为“int”,并使其可为空。然后添加另一个名为 about_age 的列,该列可以是具有值 oldyoung 的 ENUM。只要“age”列为 NULL,您的应用程序就可以检查 about_age 列。只有这样,你的数据意味着什么才完全清楚。

关于mysql - 为什么数学运算符与sql中的字符串交互,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36472925/

相关文章:

php - 检查行是否有特定的 child 加入

java - 基本运算符: Why int z = x-- + 2*x = 25? 计算过程是怎样的?

c++ - 在 C++ 中定义运算符 **

java - 我对逻辑运算符感到困惑,有人可以帮助我清理我的困惑吗?多个参数?

C++继承加运算符

java - "x = x++"之后的 x 是什么?

php - Yii2 事务 - 更新先前未提交的值加上新的提交值?

带条件和计算的 Mysql 触发器

mysql - sql语句中如何有多个AND条件?

mysql - 如何编写这样的mysql查询?