mysql> select '50' >= 50;
+------------+
| '50' >= 50 |
+------------+
| 1 |
+------------+
1 row in set (0.00 sec)
mysql> select '50' >= binary 50;
+-------------------+
| '50' >= binary 50 |
+-------------------+
| 1 |
+-------------------+
1 row in set (0.00 sec)
mysql> select '6' > 50;
+----------+
| '6' > 50 |
+----------+
| 0 |
+----------+
1 row in set (0.00 sec)
mysql> select '6' > binary 50;
+-----------------+
| '6' > binary 50 |
+-----------------+
| 1 |
+-----------------+
1 row in set (0.00 sec)select '6' > binary 50; 这个为什么?
+------------+
| '50' >= 50 |
+------------+
| 1 |
+------------+
1 row in set (0.00 sec)
mysql> select '50' >= binary 50;
+-------------------+
| '50' >= binary 50 |
+-------------------+
| 1 |
+-------------------+
1 row in set (0.00 sec)
mysql> select '6' > 50;
+----------+
| '6' > 50 |
+----------+
| 0 |
+----------+
1 row in set (0.00 sec)
mysql> select '6' > binary 50;
+-----------------+
| '6' > binary 50 |
+-----------------+
| 1 |
+-----------------+
1 row in set (0.00 sec)select '6' > binary 50; 这个为什么?
如:
mysql> select '50' = 50;
+-----------+
| '50' = 50 |
+-----------+
| 1 |
+-----------+但是如果带了binary时,那将会把前者转化成binary值进行比较
mysql> select '6' > binary 50
-> ;
+-----------------+
| '6' > binary 50 |
+-----------------+
| 1 |
+-----------------+
1 row in set (0.00 sec)这相当于比较select 54 > 50
'6'的二进制表示是36,即十进制的54
mysql> select binary 50,50 as xxxxxxxxxxx, '50' as yyyyyyyyy;
+-----------+-------------+-----------+
| binary 50 | xxxxxxxxxxx | yyyyyyyyy |
+-----------+-------------+-----------+
| 50 | 50 | 50 |
+-----------+-------------+-----------+
1 row in set (0.00 sec)mysql>
+--------+
| '6'>50 |
+--------+
| 0 |
+--------+
1 row in set (0.00 sec)
mysql> select 6>'50';
+--------+
| 6>'50' |
+--------+
| 0 |
+--------+
1 row in set (0.00 sec)
很明显,与前后者没有关系,关键在于,转化同统一的数字进行比较。
mysql> select '6'> binary 50;
+----------------+
| '6'> binary 50 |
+----------------+
| 1 |
+----------------+
1 row in set (0.00 sec)
mysql> select 6 > binary '50';
+-----------------+
| 6 > binary '50' |
+-----------------+
| 0 |
+-----------------+
1 row in set (0.00 sec)
mysql> select 6 > binary 50;
+---------------+
| 6 > binary 50 |
+---------------+
| 0 |
+---------------+
1 row in set (0.00 sec)
这是为什么呢?如果用2楼binary 50 当成字符串就可以理解。
想和楼主确认一下, binary 50 是字符串还是数字?