【问题标题】:Error comparing integer with string in MysQL query (1 = '1sk')在 MySQL 查询中将整数与字符串进行比较时出错 (1 = '1sk')
【发布时间】: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


【解决方案1】:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-11-27
    • 1970-01-01
    • 2016-01-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多