昨天我运行了一个查询
UPDATE table SET col='newvalue' WHERE col = 99
Run Code Online (Sandbox Code Playgroud)
在哪里col是 VARCHAR
它更新了“099string”和“99something”等行,这显然导致了错误的更新
我预计只更新 col = "99" 的地方
我在用10.2.40-MariaDB-1:10.2.40+maria~bionic-log
PS:我知道“099anystring”=“99”会按照我的意图工作。
但这不是我的问题。
我的问题是“099anystring”= 99 返回 true 的技术原因是什么?
当您将整数与字符串进行比较时,它将字符串转换为整数。
"099anystring" = 99与您正在编写的内容相同,099 = 99在两种情况下都返回 true
https://mariadb.com/kb/en/equal/