2011-03-28 67 views
1

与我的other thread基本相同的问题!带有通配符的SQL选择查询输入参数

我有一个数据库表,我需要编写一个查询,返回基于字符串部分匹配的结果。

Example: 

DB field: abc 

Search term: 123abc 

i.e. I want given 123abc for it to return the row that has the abc field in it! 

My attempt: 

SELECT mood from users where '$searchTerm' like '%' || dbField 

是否可能以任何方式?


嗯,基本上我想这些数字与搜索项la77740985

id | mood | numberfield 
==== ===== ============ 
1  bad  '77740985' 
2  good  '77513755' 

运行查询返回两行相匹配!

注意:通配符应该只位于字符串的开头,换句话说,我希望搜索字词以任何东西开头,但仍与数据库中基本上具有相同结尾的字符串匹配。

回答

2

它的工作是这样的:

从用户

SELECT心情其中 '$ SEARCHTERM'像con猫( '%',numberField);

0
SELECT mood 
from users 
where '$searchTerm' like '%' || numberField 

这将匹配$ searchTerm ='123abc'对包含'abc'的dbField。这是正确的。如果您需要包含(任何地方),请在末尾添加|| '%'

全部测试脚本

drop table if exists users2; 
create table users2 (mood, numberfield); 
insert into users2(mood,numberfield) values ('happy','77740985'); 
insert into users2(mood,numberfield) values ('sad','77513755'); 

然后运行这个

SELECT mood from users2 where 'la77740985' like ('%' || numberfield); 

输出

mood 
======= 
'happy' 
+0

@Richard是的,但它也匹配其他不相关的领域出于某种原因! – mixkat 2011-03-28 19:02:55

+0

@mixkat - 你能列出一些例子吗(编辑问题) - 请参阅我的编辑答案 – RichardTheKiwi 2011-03-28 19:05:28

+0

@Richard它不适合我!它返回两个字段! – mixkat 2011-03-28 19:06:08