【发布时间】:2017-05-22 21:40:43
【问题描述】:
当我运行这个查询时,为什么我有一个数字等于varchar?
select 1='sk', 1=1, 1='1sk', 0='sk', 9='9sk', 90='90ss' from dual
如何禁用此行为?
【问题讨论】:
-
您不能“禁用”此功能。相反,您应该在进行比较时只使用正确的类型。
标签: mysql sql type-conversion
当我运行这个查询时,为什么我有一个数字等于varchar?
select 1='sk', 1=1, 1='1sk', 0='sk', 9='9sk', 90='90ss' from dual
如何禁用此行为?
【问题讨论】:
标签: mysql sql type-conversion
在这种情况下,MySql 获取字符串中的前导数字并将它们转换为数字,并忽略从碰到非数字字符的点开始的所有内容。
相反,您可以将数字显式转换为字符串:
MariaDB [db]> SELECT 1='1sk', CAST(1 AS CHAR)='1sk';
+---------+-----------------------+
| 1='1sk' | CAST(1 AS CHAR)='1sk' |
+---------+-----------------------+
| 1 | 0 |
+---------+-----------------------+
1 row in set, 1 warning (0.00 sec)
【讨论】: