为什么 SELECT "099anystring" = 99 在 Mysql 中返回 true?

Uma*_*air 2 mysql mariadb

昨天我运行了一个查询

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 的技术原因是什么?

Ale*_*shy 5

当您将整数与字符串进行比较时,它将字符串转换为整数。

"099anystring" = 99与您正在编写的内容相同,099 = 99在两种情况下都返回 true

https://mariadb.com/kb/en/equal/