在输入参数上使用通配符的SQL select查询

时间:2011-03-28 18:55:43

标签: sql sqlite select wildcard sql-like

基本上与other thread相同的问题!

我有一个db表,我需要编写一个查询,它将根据字符串的部分匹配返回结果。

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 个答案:

答案 0 :(得分:2)

它的工作原理如下:

从用户处选择心情,其中'$ searchTerm'就像concat('%',numberField);

答案 1 :(得分: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'