Запрос выбора SQL с подстановочным знаком для входного параметра - PullRequest
1 голос
/ 28 марта 2011

Тот же вопрос, что и у моей другой темы в основном!

У меня есть таблица БД, и мне нужно написать запрос, который будет возвращать результаты на основе частичного совпадения строки.

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 ]

2 голосов
/ 29 марта 2011

Это работает так:

ВЫБЕРИТЕ настроение от пользователей, где '$ searchTerm' подобно concat ('%', numberField);

0 голосов
/ 28 марта 2011
SELECT mood
from users
where '$searchTerm' like '%' || numberField

Это будет соответствовать $ searchTerm = '123abc' против dbField, который содержит 'abc'. Это правильно. Если вам нужно содержит (где угодно), то добавьте || '%' в конце.

Полный тестовый скрипт

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'
...