最近遇到一个MySQL的问题,问题如下:
[code="java"]
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;
[/code]
使用如下语句
select * from authentication where DEVROLENAME like "1.0TR069%";
[color=red]不能查询出这条记录。[/color]
[color=blue]如果删除索引Idx_DEVROLENAME, 再查询则可以查出来。[/color]
不知道什么原因,望指点。
测试版本 MySQL 5.1.24 linux版
可能是mysql的bug:
[url]http://bugs.mysql.com/bug.php?id=20471[/url]
USE pubs
GO
SELECT phone
FROM authors
WHERE phone NOT LIKE '415%'
ORDER BY au_lname
GO
注意 “” 和 ‘’的区别,在看看这篇文章http://blog.csdn.net/wei0527/archive/2009/04/17/4086131.aspx