如下:
mysql> select binary 'ABCD'='abcd' COM1, 'ABCD'='abcd' COM2;
+--------+-----------+
| COM1 | COM2 |
+--------+-----------+
| 0 | 1 |
+---------+-----------+
1 row in set (0.00 sec)
____________________________________________________________
(僅僅有些而已!4.*以前)
因爲有的MySQL特別是4.*以前的對於中文檢索會有不準確的問題,可以在檢索的時候加上binary。
建表:
create TABLE usertest (
id int(9) unsigned NOT NULL auto_increment,
username varchar(30) NOT NULL default '',
primary key (id)
)
插入數據:
insert into usertest (username) VALUES('美文');
insert into usertest (username) VALUES('美國項目');
insert into usertest (username) VALUES('李文');
insert into usertest (username) VALUES('老唐');
insert into usertest (username) VALUES('夢漂');
insert into usertest (username) VALUES('龍武');
insert into usertest (username) VALUES('夏');
例如:select * from usertest where username like '%夏%' ,結果七條記錄都出來了,比較鬱悶。
如果使用=而不是like的時候,select * from usertest where username = '夏' ,只出現一個結果。因爲mysql 的LIKE操作是按照ASCII 操作的,所以LIKE的時候是可能有問題的。問題繼續:如果再加上:
insert into usertest (username) VALUES('文');
insert into usertest (username) VALUES('唐');
還是使用select * from usertest where username = '夏' ,結果還是出現3條記錄,又鬱悶了。解決辦法如下:
1.在create的時候就使用binary,而不是在query的時候加。
username varchar(30) BINARY NOT NULL default '', 如果表已經建好了,使用:
alter table usertest modify username varchar(32) binary; 來就該表的屬性。
2.在query的時候加上binary,select * from usertest where username like binary '%夏%' ,就可以準確的查詢出一條記錄來。
文章來源:http://blog.china.alibaba.com/blog/wtjxn/article/b0-i1573742.html