SELECT id, name FROM books where instr('aaaaaITbbbbb',name)>0;
我从程序外部提供一个字符串如'aaaaaITbbbbb',然后查找数据库中该字符串包含name的数据。数据库里的确有数据name=‘OK’,但是为什么不能返回数据。
MySQL文档中说instr的第一个参数为字段名,我写在第二个参数难道不行吗?
如果不行,那应该怎么样写查询语句?高手指点。
我从程序外部提供一个字符串如'aaaaaITbbbbb',然后查找数据库中该字符串包含name的数据。数据库里的确有数据name=‘OK’,但是为什么不能返回数据。
MySQL文档中说instr的第一个参数为字段名,我写在第二个参数难道不行吗?
如果不行,那应该怎么样写查询语句?高手指点。
SELECT id, name FROM books WHERE instr( 'OK', name ) ;
数据库中有一条记录OK,但是为什么这两条语句执行结果不一样
(不要高估你的汉语表达能力或者我的汉语理解能力)
建议你列出你的表结构,并提供测试数据以及基于这些测试数据的所对应正确结果。
参考一下这个贴子的提问方式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)
这样想帮你的人可以直接搭建和你相同的环境,并在给出方案前进行测试,避免文字描述理解上的误差。
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两条数据。
你的INSERT语句写在哪了?打算让大家猜你的表结构? NAME是CHAR 还是 VARCHAR ?
问题说明越详细,回答也会越准确!参见如何提问。(提问的智慧)
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');
SELECT id, name FROM books WHERE instr( 'OK', name ) ;
第一条SQL执行返回一条数据,第二条SQL执行无返回数据。这不正常吗
+----+-------+
| 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>
当然不一样instr( name, 'OK' ),name里包含OK这个字符串
例如:name="OKOKOK" 或则 name="OK1OK12"
instr( 'OK', name ),”OK“ 字符串里包含name
而这个:name="OKOKOK" 或则 name="OK1OK12" 这两个结果是出不来的,因为"OK" 只有两个字符,除非name为:O或者K,或者OK才能匹配上
让各位见笑了。
谨听诸位教诲。。