Hello! 欢迎来到小浪云!


MySQL 中仅指定字段,为何能查询部分数据?


avatar
小浪云 2024-11-11 61

MySQL 中仅指定字段,为何能查询部分数据?

mysql中,where条件仅指定字段的含义解析

一个网友遇到的sql语句中,where条件仅指定了一个字段,没有具体条件,却意外地查询到了数据。经观察发现,只有数字开头的记录会被查询出来,而字母和0开头的记录被过滤掉了。

根据MySQL文档中关于where子句的解释,where条件是一个表达式,它的值为真则选择行。因此,在这种情况下,uuid字段本身被当作了一个表达式来求值。

可以将where uuid视为无条件限制,因为任何值都可以被转换为真。因此,所有记录都会被查询出来。但是,由于数据类型是varchar,mysql会自动尝试将其转换成number类型,因此只能成功转换成数字开头的记录,而字母和0开头的记录则无法转换成数字,便被过滤掉了。

相关阅读