Like查询中出现换行符的问题
最近遇到一个MySQL的Issue,问题如下:CREATE TABLE `authentication` (
`ID` bigint(20) NOT NULL AUTO_INCREMENT,
`DEVUSERNAME` varchar(255) COLLATE utf8_bin DEFAULT NULL,
`DEVPASSWORD` varchar(255) COLLATE utf8_bin DEFAULT NULL,
`DEVROLENAME` varchar(255) COLLATE utf8_bin DEFAULT NULL,
PRIMARY KEY (`ID`),
KEY `Idx_DEVROLENAME` (`DEVROLENAME`)
) ENGINE=InnoDB AUTO_INCREMENT=9 DEFAULT CHARSET=utf8 COLLATE=utf8_bin ;
insert into authentication (ID,DEVUSERNAME,DEVPASSWORD,DEVROLENAME) values(8,'1.0','1.0','1.0');
update authentication set DEVROLENAME='1.0TR069\r\n' where id =8;
commit;
使用如下语句
select * from authentication where DEVROLENAME like "1.0TR069%";
不能查询出这条记录。
如果删除索引Idx_DEVROLENAME, 再查询则可以查出来。
不知道什么原因,望高手指点。
测试版本 MySQL 5.1.24 linux版 给字段加个binnary就OK了:
SELECT * FROM authentication WHERE BINARY(DEVROLENAME) LIKE "1.0TR06%";
或者在update时加binary,也是可以的:
UPDATE authentication SET DEVROLENAME=BINARY('1.0TR069\r\n') WHERE id =8;
页:
[1]