2015-10-21 6 views
0

У меня есть таблица ПАМКак использовать LIKE в запросе для поиска нескольких слов?

id name   class mark 

1 John Deo Matt Four 75 
2 Max Ruin  Three 85 
3 Arnold   Three 55 
4 Krish Star HN Four 60 
5 John Mike  Four 60 
6 Alex John  Four 55 

Я хотел бы найти клиент, который может быть дан в John Matt без deo строки. Как использовать условие LIKE для этого?

SELECT * FROM cust WHERE name LIKE '%John Matt%' 

Результат должен выбрать строку 1.

что, если строка поиска Matt Deo или john

выше не может быть реализован при попытке найти точное название. Как я могу сделать запрос LIKE для извлечения клиента, даже если указаны две строки?

+1

% - это шаблон. поэтому, когда имя типа «John% Matt» будет соответствовать «John something Matt» – Rene

+0

@Rene Но что, если 'Matt Deo' должен искать? – user41048

+0

'select * from cust где name Like '% John% Matt%';' И не забывайте, что Oracle проверит регистр слов (с учетом регистра). – RubahMalam

ответ

1

Если метасимволом является

string1<space>anything<space>string2 

вы можете написать:

like string1||' % '||string2 
+0

что если строка поиска задана 'Matt Deo' – user41048

+0

Посмотрите, можете ли вы переписать свое заявление в соответствии с вашими потребностями. Вы всегда можете добавить a или ... для соответствия string1 || ' «|| строка2. – Rene

+0

Не работает! Можем ли мы использовать 'Contains()'? – user41048

0

Почему это не

select * from cust where name Like 'John%Matt' ; 
0
SELECT * 
    FROM custtable 
    WHERE upper(NAME) LIKE '%' || upper(:first_word) || '%' 
    AND upper(NAME) LIKE '%' || upper(:second_word) || '%' 
0

Я считаю, что вам нужно REGEXP_LIKE():

SQL> with tbl(name) as (
     select 'John Deo Matt' from dual 
    ) 
    select name 
    from tbl 
    where regexp_like(name, 'matt|deo', 'i'); 

NAME 
------------- 
John Deo Matt 

SQL> 

Здесь регулярное выражение строка определяет имя содержит «матовый» или «Део» и «я» означает, что его не чувствительны к регистру. Порядок имен не имеет значения.

 Смежные вопросы

  • Нет связанных вопросов^_^