- ardim
-
作用:like binary 用来区分大小写。其他作用没了解过
如下:
select * from hats where job like "%C%";
select * from ahts where job like binary "%C%";
- 北境漫步
-
BINARY不是函数,是类型转换运算符,它用来强制它后面的字符串为一个二进制字符串,可以理解为在字符串比较的时候区分大小写
如下:
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 "%夏%" ,就可以准确的查询出一条记录来。
- CarieVinne
-
mysql中like binary什么意思
如:在模糊查询标题中包含 "flash" 这个单词可写为
select title from table where binary title like ‘%flash%"
如果将 flash 写为大写的 FLASH 那么
select title from table where binary title like ‘%FLASH%"
将查询不到。
这样在查询的时候就会按照大小写来进行搜索
当然也可以修改数据库字段的类型为 "binary"
这样你所有的查询都将以区分大小写来查询。
注:以上的操作只适用于英文,如果要查询的关键字是汉字,则会查询不到。直今还没有具体的解决办法。
原因: 在MySQL中,进行中文排序和查找的时候,对汉字的排序和查找结果是错误的。这种情况在MySQL的很多版本中都存在。如果这个问题不解决,那么MySQL将无法实际处理中文。?
出现这个问题的原因是:MySQL在查询字符串时是大小写不敏感的,在编绎MySQL时一般以ISO-8859字符集作为默认的字符集,因此在比较过程中中文编码字符大小写转换造成了。
出现这种情况也可通过另一种方式来实现(个人思路):如
如果既要判断英文又要判断中文,那么可通过一个方法判断关键字是中文 还是英文。如果是中文使用一种查询方法,英文使用一种可解决。
具体实例:
//$str="abc";
$str="张";
// preg_match("/[x80-xff]/", $path)判断中文,binary不支持中文的使用
if(preg_match("/[x80-xff]/", $path)) {
$sql = "SELECT id FROM student WHERE name like "$str"; //却掉 binary
}else{
$sql = "SELECT id FROM student WHERE binary name like "$str"";
}
- max笔记
-
LIKE 类似于模糊搜索
字段 LIKE "%要搜索的部分内容%"
% 表示任意字符
binary 则是将内容强制转换成二进制的字符串
- 贝贝
-
like 匹配不区分大小写,加上binary就可以区分大小写了(BINARY不是函数,是类型转换运算符,它用来强制它后面的字符串为一个二进制字符串,可以理解为在字符串比较的时候区分大小写)
- snjk
-
这个问题分开回答
LIKE 类似于模糊搜索
字段 LIKE "%要搜索的部分内容%"
% 表示任意字符
binary 则是将内容强制转换成二进制的字符串
- FinCloud
-
MYSQL的binary解决mysql数据大小写敏感问题
mysql 的LIKE操作是按照ASCII 操作的,所以LIKE的时候是可能有问题的
select * from usertest where username like binary "%夏%" ,就可以准确的查询出一条记录来。
- cloudcone
-
能描述清楚点儿吗,你说的是类似这样的命令吗:
show variables like "binary";
这个的意思是模糊查询,查询带有binary字段的参数值
- nicehost
-
like 匹配不区分大小写,加上binary就可以区分大小写了