我今天发现了一些奇怪的事假设你有一个mysql表:
create table usr(
usr_id serial
)
然后你插入一行:
INSERT INTO usr (usr_id) VALUES ('1');
然后你运行一个查询:
SELECT * FROM usr WHERE usr_id='1sfgfsdgs'
MySql返回结果,就像您输入的一样:
SELECT * FROM usr WHERE usr_id='1'
这会发生吗?如果是的话 - 有人能指出我描述这个的文件吗?我只是好奇这是否是预期的行为 .
[jeremy @ jjxps15~] $ mysql --version mysql Ver 15.1使用readline 5.1分发10.1.17-MariaDB,用于Linux(x86_64)
2 回答
那么这是有污垢的页面,http://dev.mysql.com/doc/refman/5.7/en/type-conversion.html
但它显然是泥
它确实有一些例子可以使事情更加清晰
这实际上意味着如果将数字与字母数字字符串进行比较,并且该字符串以数字开头,则所有非数字字符都将被丢弃 .
您使用串行的事实与此无关 .
因为
usr_id
是serial
列,所以它可能只包含整数(What is the difference between SERIAL and AUTO_INCREMENT in mysql) .因此MySQL忽略了'1'旁边的字符 .