在MysQL查询中将整数与字符串进行比较时出错(1 =' 1sk')

时间:2017-05-22 21:40:44

标签: mysql sql type-conversion

当我运行此查询时,为什么我的数字等于varchar

select 1='sk', 1=1, 1='1sk', 0='sk', 9='9sk', 90='90ss' from dual

Example

如何禁用此行为?

1 个答案:

答案 0 :(得分:3)

在这种情况下,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)