对于SELECT 0 ='a',0 = '';
1. type of 0 is int
2. type of 'a' is char then CAST('a' AS UNSIGNED) or CAST('' AS UNSIGNED) will be 0
将char转换为int然后0 = 0评估你的情况是真实1. 在:
select 'A'='a', 0=0, '0'='a',0='a1';
所有列将是真实的,但对于:
select 0='1a';
会是假的,因为CAST( '1A' AS UNSIGNED)为1
mysql> SELECT 'asadsadsa' = 'a', 0 = 'az', cast('az' AS unsigned) , 'asadsadsa' = 'a' = 'az', 0 =0;
+-------------------+----------+--------------------------+--------------------------+------+
| 'asadsadsa' = 'a' | 0 = 'az' | cast('az' AS unsigned) | 'asadsadsa' = 'a' = 'az' | 0 =0 |
+-------------------+----------+--------------------------+--------------------------+------+
| 0 | 1 | 0 | 1 | 1 |
+-------------------+----------+--------------------------+--------------------------+------+
1 row in set, 3 warnings (0.00 sec)
Warning (Code 1292): Truncated incorrect DOUBLE value: 'az'
Warning (Code 1292): Truncated incorrect INTEGER value: 'az'
Warning (Code 1292): Truncated incorrect DOUBLE value: 'az'
在此页面搜索“香蕉”:http://grimoire.ca/mysql/choose-something-else –