松散的WHERE语句

Ema*_*sev 2 mysql sql

以下3个查询将返回相同的记录:

SELECT * FROM items WHERE id = '1'
SELECT * FROM items WHERE id = '1 foo'
SELECT * FROM items WHERE id = '1 123'
Run Code Online (Sandbox Code Playgroud)

看起来引号中空格后的字符会被忽略.

这是一个功能,它的目的是什么?

The*_*ter 6

由于id是一个数字,当MySql将字符串转换为数字时,它们都会产生相同的结果:数字1.

SELECT CAST('1' AS SIGNED) a,
  CAST('1 foo' AS SIGNED) b,
  CAST('1 123' AS SIGNED) c
Run Code Online (Sandbox Code Playgroud)

结果:

a | b | c
1 | 1 | 1
Run Code Online (Sandbox Code Playgroud)