SELECT id, name FROM books where instr('aaaaaITbbbbb',name)>0;
我从程序外部提供一个字符串如'aaaaaITbbbbb',然后查找数据库中该字符串包含name的数据。数据库里的确有数据name=‘OK’,但是为什么不能返回数据。
MySQL文档中说instr的第一个参数为字段名,我写在第二个参数难道不行吗?
如果不行,那应该怎么样写查询语句?高手指点。

解决方案 »

  1.   

    SELECT id, name FROM books where instr(name,'aaaaaITbbbbb')
      

  2.   

    我想把name作为子字符串使用。
      

  3.   

    SELECT id, name FROM books where instr('aaaaaITbbbbb',name)
      

  4.   

    SELECT id, name FROM books WHERE instr( name, 'OK' ) ;
    SELECT id, name FROM books WHERE instr( 'OK', name ) ;
    数据库中有一条记录OK,但是为什么这两条语句执行结果不一样
      

  5.   


     (不要高估你的汉语表达能力或者我的汉语理解能力)
       建议你列出你的表结构,并提供测试数据以及基于这些测试数据的所对应正确结果。
       参考一下这个贴子的提问方式http://topic.csdn.net/u/20091130/20/8343ee6a-417c-4c2d-9415-fa46604a00cf.html
       
       1. 你的 create table xxx .. 语句
       2. 你的 insert into xxx ... 语句
       3. 结果是什么样,(并给以简单的算法描述)
       4. 你用的数据库名称和版本(经常有人在MS SQL server版问 MySQL)
       
       这样想帮你的人可以直接搭建和你相同的环境,并在给出方案前进行测试,避免文字描述理解上的误差。   
      

  6.   

    数据库表books结构简化如下:
    id       name
    1          OK
    2          Hello
    3          bbb

    MySQL的版本为 5.5
    然后执行两条SQL查询语句:SELECT id, name FROM books WHERE instr( name, 'OK' ) ;
    SELECT id, name FROM books WHERE instr( 'OK', name ) ;第一条SQL执行返回一条数据,第二条SQL执行无返回数据。
    很想知道这是为什么。
    其实我是想做这样的事情,从外部程序提供一个字符串,比如"aaaHellobbb",然后写一条SQL语句,这条SQL语句能够从books表中查询出字段name包含在"aaaHellobbb"中的数据。
    如果SQL执行成功,应该得到ID为2和3两条数据。
      

  7.   

    你的 create table 语句写在哪了?
    你的INSERT语句写在哪了?打算让大家猜你的表结构? NAME是CHAR 还是 VARCHAR ?
    问题说明越详细,回答也会越准确!参见如何提问。(提问的智慧
        
      

  8.   

    创建表和插入数据CREATE TABLE IF NOT EXISTS books (
    id int(11) unsigned NOT NULL AUTO_INCREMENT,
    name varchar(20) COLLATE utf8_unicode_ci NOT NULL
    PRIMARY KEY (`id`)
    ) ENGINE=MyISAM  DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci ;INSERT INTO books (id, name) VALUES (1, 'OK'), (2, 'Hello'), (3, 'bbb');
      

  9.   

    SELECT id, name FROM books WHERE instr( name, 'OK' ) ;
    SELECT id, name FROM books WHERE instr( 'OK', name ) ;
    第一条SQL执行返回一条数据,第二条SQL执行无返回数据。这不正常吗
      

  10.   

    INSTR (string ,substring ) //返回substring首次在string中出现的位置,不存在返回0
      

  11.   

    我坚信楼主根本没有用自己贴出的例子做过试验。mysql> select * from books;
    +----+-------+
    | id | name  |
    +----+-------+
    |  1 | OK    |
    |  2 | Hello |
    |  3 | bbb   |
    +----+-------+
    3 rows in set (0.03 sec)mysql> SELECT id, name FROM books WHERE instr( name, 'OK' ) ;
    +----+------+
    | id | name |
    +----+------+
    |  1 | OK   |
    +----+------+
    1 row in set (0.44 sec)mysql> SELECT id, name FROM books WHERE instr( 'OK', name ) ;
    +----+------+
    | id | name |
    +----+------+
    |  1 | OK   |
    +----+------+
    1 row in set (0.00 sec)mysql>
      

  12.   


    当然不一样instr( name, 'OK' ),name里包含OK这个字符串
    例如:name="OKOKOK" 或则 name="OK1OK12"
    instr( 'OK', name ),”OK“ 字符串里包含name
    而这个:name="OKOKOK" 或则 name="OK1OK12" 这两个结果是出不来的,因为"OK" 只有两个字符,除非name为:O或者K,或者OK才能匹配上
      

  13.   

    我把数据库的数据导出来看看,终于他妈的知道怎么回事了。数据库里面的name字段每条数据后面都多了个'\n'.
    让各位见笑了。
    谨听诸位教诲。。