我正在做一些MySQL测试查询,并意识到将字符串列与0(作为数字)进行比较给出了TRUE!
select 'string' = 0 as res; -- res = 1 (true), UNexpected! why!??!?!
Run Code Online (Sandbox Code Playgroud)
但是,将它与任何其他数字进行比较,正数或负数,整数或小数,false按预期给出(当然除非字符串是数字表示为字符串)
select 'string' = -12 as res; -- res = 0 (false), expected
select 'string' = 3131.7 as res; -- res = 0 (false), expected
select '-12' = -12 as res; -- res = 1 (true), expected
Run Code Online (Sandbox Code Playgroud)
当然,将字符串与'0'字符串进行比较,如预期的那样给出false.
select 'string' = '0' as res; -- res = 0 (false), expected
Run Code Online (Sandbox Code Playgroud)
但为什么它会成真'string' = 0呢?
这是为什么?