Главная SQL Like
E-mail Печать PDF

LIKE - данный оператор используется с условием WHERE для поиска значений по образцу.

Синтаксис SQL LIKE

1
2
3
SELECT column_name(s)
FROM table_name
WHERE column_name LIKE pattern

Пример 1

Есть таблица "Persons":

P_Id LastName FirstName Address City
1 Hansen Ola Timoteivn 10 Sandnes
2 Svendson Tove Borgvn 23 Sandnes
3 Pettersen Kari Storgt 20 Stavanger

Теперь мы хотим выбрать всех лиц, которые живут в городе, имя которого начинается с буквы "s" из таблицы выше.

Для этого используем такой запрос:

1
2
SELECT * FROM Persons
WHERE City LIKE 's%'

"%" - данный знак является маской. Обозначает любые символы.

Результат запроса:

P_Id LastName FirstName Address City
1 Hansen Ola Timoteivn 10 Sandnes
2 Svendson Tove Borgvn 23 Sandnes
3 Pettersen Kari Storgt 20 Stavanger

Пример 2

Теперь мы хотим выбрать всех лиц, которые живут в городе, имя которого заканчивается на букву "s" из таблицы выше.

Для этого используем такой запрос:

1
2
SELECT * FROM Persons
WHERE City LIKE '%s'

Результат запроса:

P_Id LastName FirstName Address City
1 Hansen Ola Timoteivn 10 Sandnes
2 Svendson Tove Borgvn 23 Sandnes

Пример 3

Теперь мы хотим выбрать всех лиц, которые живут в городе, имя которого содержит в себе буквы "tav". Не важно, в каком месте будут находиться данные символы, в начале или конце слова.

Для этого используем такой запрос.:

1
2
SELECT * FROM Persons
WHERE City LIKE '%tav%'

Результат запроса:

P_Id LastName FirstName Address City
3 Pettersen Kari Storgt 20 Stavanger

Пример 4

Теперь мы хотим выбрать всех лиц, которые живут в городе, имя которого не содержит в себе буквы "tav". Используем ключевое слово NOT.

Для этого используем такой запрос.:

1
2
SELECT * FROM Persons
WHERE City NOT LIKE '%tav%'

Результат запроса:

P_Id LastName FirstName Address City
1 Hansen Ola Timoteivn 10 Sandnes
2 Svendson Tove Borgvn 23 Sandnes

Комментарии

 
+20 #1 Шелест Константин 2010-10-29 17:48 Также можно использовать символ подчеркивания (_) для замены отдельного символа в значении. Например, если вы зададите:

SELECT *
FROM Persons
WHERE FirstName LIKE 'To_'

То результатом запроса будет значение Tom, Tos, Top но не Tove, поскольку в нем четыре символа, а вы задали в поиск значение с тремя.
Цитировать
 
 
+7 #2 Трололо 2010-12-01 10:13 Как экранировать спец символы? Цитировать
 
 
+2 #3 coel 2011-05-27 10:16 Цитирую Трололо:
Как экранировать спец символы?

dev.mysql.com/.../...
Цитировать
 
 
+1 #4 snarbi 2011-08-05 11:55 Можно ли создавать комбинированные запросы LIKE и NOT LIKE
Что-то на подобие такого
SELECT * FROM doc WHERE item LIKE '%a%'+(NOT LIKE '%b%')+'%c%'
где показано что между символами 'a' и 'c' не дожно быть символа 'b'
Цитировать
 
 
+2 #5 vladmax 2011-09-01 18:25 Цитирую snarbi:
Можно ли создавать комбинированные запросы LIKE и NOT LIKE
Что-то на подобие такого
SELECT * FROM doc WHERE item LIKE \'%a%\'+(NOT LIKE \'%b%\')+\'%c%\'
где показано что между символами \'a\' и \'c\' не дожно быть символа \'b\'


зачем вкладывать одно условие в другое. очевидно, что должна работать их коньюнкция:
… WHERE item LIKE %a%c% AND item NOT LIKE %a%b%c%
Цитировать
 

Авторизация

Nice Ajax Poll

Какое из моих расширений самое лучшее?

Статистика



Реклама