首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 数据库 > Mysql >

binary解决思路

2012-03-06 
binarymysql select 50 50+------------+| 50 50 |+------------+|1 |+------------+1 row in

binary
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; 这个为什么?

[解决办法]
binary 50 

说明了 50 将是个字符串! 这样其实就是做的字符串比较。
[解决办法]
是这样的,当不带binary时,默认将后者转化成前者来比较。
如:
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

热点排行