mysql查询语句,like'中文字'的问题 mysql语句SELECT * FROM `aa` WHERE name LIKE '%李%'LIMIT 0 , 30请问我这句话查询后,为什么会把name中有‘梦’的也搜索出来? 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 X李XX 等于什么都可以找出来的..梦..李..梦 你name中只要有李就会搜出来。 %是个通配符,它可以代表0到n个字符,WHERE name LIKE '%李%'就是只要name中有“李”这个字符就满足条件,和dos中的通配“*“意思一样! 我是因为编的时候出现了问题,就测试了下表aa里只有一个name字段,字段下就两行数据 name 李一 梦二 用刚刚的sql语句SELECT * FROM `aa` WHERE name LIKE '%李%'搜出来还是都有,这是为什么? try:=====================SELECT * FROM `aa` WHERE binary name LIKE '%李%' 能否导份sql结构与数据贴出来 瞧一瞧? 你是05还是08版本的数据库.应该是05查询编码的问题.因为是中文.所以你可以这样写试试:SELECT *FROM `aa`WHERE name LIKE N'%李%' -- ---------------------------------------------------------- -- 表的结构 `aa`-- CREATE TABLE `aa` ( `name` varchar(4) NOT NULL) ENGINE=InnoDB DEFAULT CHARSET=latin1;-- -- 导出表中的数据 `aa`-- INSERT INTO `aa` (`name`) VALUES ('李一'),('梦二'); 方法一 :解决方法是对于包含中文的字段加上 "binary" 属性,使之作为二进制比较,例如将 "name char(10)" 改成 "name char(10)binary"。方法二 :如果你使用源码编译 MySQL,可以编译 MySQL 时使用 --with--charset=gbk 参数,这样 MySQL 就会直接支持中文查找和排序了。方法三 :可以使用 Mysql 的 locate 函数来判断。以上述问题为例 , 使用方法为 :SELECT * FROM table WHERE locate(field,' 李 ') > 0;方法四 :把您的 Select 语句改成这样 ,SELECT * FROM TABLE WHERE FIELDS LIKE BINARY '%FIND%' 即可问题出现的原因是 :在 MySQL 中,进行中文排序和查找的时候,对汉字的排序和查找结果是错误的。这种情况在 MySQL 的很多版本中都存在。如果这个问题不解决,那么 MySQL 将无法实际处理中文。MySQL 在查询字符串时是大小写不敏感的,在编绎 MySQL 时一般以 ISO-8859 字符集作为默认的字符集,因此在比较过程中中文编码字符大小写转换造成了这种现象我用的第三个办法 select * from table where locate(` 字段名 `,' 关键字 ')>0;LOCATE(substr,str)返回子串 substr 在字符串 str 中第一次出现的位置。如果子串 substr 在 str 中不存在,返回值为 0:mysql> SELECT LOCATE(’bar’, ‘foobarbar’);-> 4 =_= latin1..你用啥子字符集了。我插不进数据的。改用utf8吧。-- ---------------------------------------------------------- -- 表的结构 `aa`-- CREATE TABLE `aa` ( `name` varchar(4) NOT NULL) ENGINE = INNODB CHARACTER SET utf8 COLLATE utf8_general_ci;-- -- 导出表中的数据 `aa`-- INSERT INTO `aa` (`name`) VALUES ('李一'),('梦二'); 老外的各种字符集几乎都有一些等价字符,这些就会造成问题所以,还是utf8/ucs2之类比较可靠, php pdo 一个正则问题 php时间戳能表达的最大时间是什么 求一条mysql语句 天空软件站那么多文件下载的链接是怎么上传到服务器的? tinyint(1)的空白? html代码怎么存入数据库? php数组重组求助 PHPer晒出你的薪资 向大牛求教:PHP下,分布式结合RPC跨主机,跨库事务,有什么好的解决方案 在线等 急急急 如何遍历js
表aa里只有一个name字段,字段下就两行数据
name
李一
梦二 用刚刚的sql语句
SELECT *
FROM `aa`
WHERE name LIKE '%李%'
搜出来还是都有,这是为什么?
=====================
SELECT *
FROM `aa`
WHERE binary name LIKE '%李%'
SELECT *
FROM `aa`
WHERE name LIKE N'%李%'
-- 表的结构 `aa`
-- CREATE TABLE `aa` (
`name` varchar(4) NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=latin1;--
-- 导出表中的数据 `aa`
-- INSERT INTO `aa` (`name`) VALUES
('李一'),
('梦二');
-- ----------------------------------------------------------
-- 表的结构 `aa`
-- CREATE TABLE `aa` (
`name` varchar(4) NOT NULL
) ENGINE = INNODB CHARACTER SET utf8 COLLATE utf8_general_ci;--
-- 导出表中的数据 `aa`
-- INSERT INTO `aa` (`name`) VALUES
('李一'),
('梦二');