Техника поиска в SQL (Like, Contain) - PullRequest
1 голос
/ 19 июля 2010

Я хочу сравнить и выбрать поле из БД, используя ключевое слово Like или любой другой метод.

Мой запрос следующий:

SELECT * FROM Test WHERE name LIKE '%xxxxxx_Ramakrishnan_zzzzz%';

, но мои поля содержат только 'Ramakrishnan '

Моя строка ввода содержит некоторые дополнительные символы xxxxxx_Ramakrishnan_zzzzz

Я хочу запрос SQL для этого.Может кто-нибудь, пожалуйста, помогите мне?

Ответы [ 3 ]

2 голосов
/ 19 июля 2010

Вы хотите сказать, что хотите наоборот?Как это?

Select * from Test where 'xxxxxx_Ramakrishnan_zzzzz' LIKE '%' + name + '%';
0 голосов
/ 19 июля 2010

Всегда ли биты xxxxxx и zzzzz 6 и 5 символов?Если так, то это выполнимо с небольшим сокращением строки.

with Test (id,name) as (
select 1, 'Ramakrishnan'
union
select 2, 'Coxy'
union
select 3, 'xxxxxx_Ramakrishnan_zzzzz'
)

Select * from Test where name like '%'+SUBSTRING('xxxxxx_Ramakrishnan_zzzzz', 8, CHARINDEX('_',SUBSTRING('xxxxxx_Ramakrishnan_zzzzz',8,100))-1)+'%'

Результаты:

id  name
1   Ramakrishnan
3   xxxxxx_Ramakrishnan_zzzzz

Если они имеют переменную длину, то это будет ужасная конструкция SUBSTRINGФункции CHARINDEX, REVERSE и LEN.

0 голосов
/ 19 июля 2010

Вы можете использовать функции MySQL, LOCATE () точно так же, как

SELECT * FROM WHERE LOCATE("Ramakrishnan",input) > 0 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...