下面是对包含 32 位长度的 varchar 字符串作为 UUID 的 MySQL 数据库表的 SQL 查询示例。如您所见,WHERE 子句不包含完整字符串,但 MySQL 返回结果。
SELECT * FROM table WHERE uuid=9
id uuid name
1 9c8f8632cbbac5b0708a9920f6fac755 John Smith
这是预期的行为吗?MySQL 强制转换字段的类型和搜索条件吗?
最佳答案
这是预期的行为。发生的事情是您将字符串与整数进行比较。在这种情况下,字符串 将根据前导数字转换为数字。
因为只有第一个字母是数字,所以它被转换为 9 —— 所以等式有效。
关于MySQL 类型转换错误或预期行为?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42196426/