mysql语句SELECT * 
FROM `aa` 
WHERE name LIKE '%李%'
LIMIT 0 , 30
请问我这句话查询后,为什么会把name中有‘梦’的也搜索出来?

解决方案 »

  1.   

    X李XX 等于什么都可以找出来的..梦..李..梦
      

  2.   

    你name中只要有李就会搜出来。
      

  3.   

    %是个通配符,它可以代表0到n个字符,WHERE name LIKE '%李%'就是只要name中有“李”这个字符就满足条件,和dos中的通配“*“意思一样!
      

  4.   

    我是因为编的时候出现了问题,就测试了下
    表aa里只有一个name字段,字段下就两行数据
     name  
     李一 
     梦二 用刚刚的sql语句
    SELECT * 
    FROM `aa` 
    WHERE name LIKE '%李%'
    搜出来还是都有,这是为什么?
      

  5.   

    try:
    =====================
    SELECT *  
    FROM `aa`  
    WHERE binary name LIKE '%李%'
      

  6.   

    能否导份sql结构与数据贴出来 瞧一瞧?
      

  7.   

    你是05还是08版本的数据库.应该是05查询编码的问题.因为是中文.所以你可以这样写试试:
    SELECT *
    FROM `aa`
    WHERE name LIKE N'%李%'
      

  8.   

    -- ---------------------------------------------------------- 
    -- 表的结构 `aa`
    -- CREATE TABLE `aa` (
      `name` varchar(4) NOT NULL
    ) ENGINE=InnoDB DEFAULT CHARSET=latin1;-- 
    -- 导出表中的数据 `aa`
    -- INSERT INTO `aa` (`name`) VALUES 
    ('李一'),
    ('梦二');
      

  9.   

    方法一 :解决方法是对于包含中文的字段加上 "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
      

  10.   

    =_=  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  
    ('李一'),
    ('梦二');
      

  11.   

    老外的各种字符集几乎都有一些等价字符,这些就会造成问题所以,还是utf8/ucs2之类比较可靠,