Sql запрос содержит: SQL LIKE – строка с заданными символами и её поиск

SQL LIKE – строка с заданными символами и её поиск

Навигация по уроку

  • Применение предиката LIKE с простыми условиями
  • Применение предиката LIKE с составными условиями

Связанные темы

  • Оператор SELECT
  • Подзапросы
Назад Содержание Вперёд>>>

Часто с помощью предиката SQL LIKE найти нужную строку в текстовых значениях таблицы проще, чем с помощью оператора
равенства (=). Предикат LIKE используется в секции WHERE. После предиката прописывается выражение, содержащее
символы алфавита, а также специальные символы – знак процента (%) и подчёркивание (_).

  • Символ % соответствует любому количеству любых символов, а также их отсутствую.
  • Символ _ соответствует ровно одному любому символу.

Приведём виды наиболее распространённых выражений, которые используются с предикатом LIKE для поиска подстроки.

  • ‘xyz%’ – любые строки, которые начинаются с букв xyz;
  • ‘xyz_’ – строка длиной в определённое количество символов, которая обязательно начинается с указанных букв;
  • ‘%z’ – любая последовательность символов, которая заканчивается символом z;
  • ‘%Word%’ – любая последовательность символов, содержащая слово ‘Word’ в любой позиции строки;
  • ‘% % %’ – строка, содержащая не менее двух пробелов.

Следует обратить внимание, что в этих выражениях Word – не то же самое, что word, так как регистр
символов имеет значение. В целом же синтаксис запросов с предикатом LIKE следующий:

SELECT СТОЛБЦЫ FROM ИМЯ_ТАБЛИЦЫ
WHERE ИМЯ_СТОЛБЦА LIKE ВЫРАЖЕНИЕ

В примерах будем работать с базой данных “Театр”. Таблица Play содержит данные о постановках. Таблица Team –
о ролях актёров. Таблица Actor – об актёрах. Таблица Director – о режиссёрах. Поля таблиц, первичные
и внешние ключи можно увидеть на рисунке ниже (для увеличения нажать левой кнопкой мыши). Данные будем
извлекать из одной таблицы – Play.

Пример 1. Вывести спектакли, названия которых начинаются со
слова ‘King’.

Пишем запрос в котором с предикатом LIKE используем выражение ‘King%’:

SELECT Name FROM Play
WHERE Name LIKE ‘King%’

В результате выполнения запроса будет выведена таблица с одной строкой:

King Lear

Пример 2. Вывести спектакли, названия которых начинаются с
буквы ‘O’ и содержат 7 символов.

Пишем запрос в котором с предикатом LIKE используем выражение ‘O______’ (подчёркивание
проставлено 6 раз):

SELECT Name FROM Play
WHERE Name LIKE ‘O______’

В результате выполнения запроса будет выведена таблица с одной строкой:

Othello

Пример 3. Вывести спектакли, названия которых заканчиваются
буквой ‘a’.

Пишем запрос в котором с предикатом LIKE используем выражение ‘%a’ (подчёркивание
проставлено 6 раз):

SELECT Name FROM Play
WHERE Name LIKE ‘%a’

В результате выполнения запроса будет выведена таблица со следующими строками:

Matilda
Antony and Cleopatra

Можно увидеть и запрос, в котором вводится дополнительное условие: название
должно заканчиваться на ‘a’, но не на ‘ra’
.

Пример 4. Вывести спектакли, в названии которых содержится слово
“War”, например, такие как “The War That Never Ends”, “The Wars of the Roses”, но не “Howards End”.

Пишем запрос в котором с предикатом LIKE используем выражение ‘%War%’:

SELECT Name FROM Play
WHERE Name LIKE ‘%War%’

В результате выполнения запроса будет выведена таблица:

The Wars of the Roses
The War That Never Ends

Можно увидеть и запрос, в котором
вводится дополнительное условие: название должно содержать “War”, но
не ‘Wars’
.

Пример 5. Вывести спектакли, в названиях которых содержится
не менее пяти пробелов.

Пишем запрос в котором с предикатом LIKE используем выражение ‘% % % % % %’:

SELECT Name FROM Play
WHERE Name LIKE ‘% % % % % %’

В результате выполнения запроса будет выведена таблица:

Jeeves and Wooster in Perfect Nonsense
All s Well That Ends Well
Morte d Arthur – Sir Thomas Malory

Можно увидеть и запрос, в котором
есть составное условие: название должно начинаться с “M” и содеражать тире (” – “)
.

  • Страница 2
Назад Содержание Вперёд>>>

Поделиться с друзьями

Оператор SQL LIKE: синтаксис, примеры

Оператор SQL LIKE устанавливает соответствие символьной строки с шаблоном. ]  Исключающий диапазон или
последовательность символов Пример 4


Примеры оператора SQL LIKE: Имеется следующая таблица Universities:

ID UniversityName Students Faculties Professores Location Site
1 Perm State National Research University 12400 12 1229 Perm psu.ru
2 Saint Petersburg State University 21300 24 13126 Saint-Petersburg  spbu. ru
3 Novosibirsk State University 7200 13 1527 Novosibirsk nsu.ru
4 Moscow State University 35100 39 14358 Moscow msu.ru
5 Higher School of Economics 20335 12 1615 Moscow hse.ru
6 Ural Federal University 57000 19 5640 Yekaterinburg urfu.ru
7 National Research Nuclear University 8600 10 936 Moscow mephi.ru

Пример 1. С помощью оператора SQL LIKE вывести записи университетов, имеющих в своем названии слово «State»:

SELECT * FROM Universities WHERE UniversityName LIKE '%State%'

Результат:

ID UniversityName Students Faculties Professores Location Site
1 Perm State National Research University 12400 12 1229 Perm psu. ru
2 Saint Petersburg State University 21300 24 13126 Saint-Petersburg  spbu.ru
3 Novosibirsk State University 7200 13 1527 Novosibirsk nsu.ru
4 Moscow State University 35100 39 14358 Moscow msu.ru

В этом примере, в качестве шаблона оператора SQL LIKE послужил ‘%State%’. Исходя из условия задачи, слово State может стоять в названии где угодно, поэтому оно обрамлено символом «%», обозначающим строку любой длины перед и после слова.

Пример 2. С помощью оператора SQL LIKE вывести записи университетов, доменное имя сайта которых содержит 4 символа (за исключением домена .ru):

SELECT * FROM Universities WHERE Site LIKE '____.ru'

Результат:

ID UniversityName Students Faculties Professores Location Site
2 Saint Petersburg State University 21300 24 13126 Saint-Petersburg  spbu. ru
6 Ural Federal University 57000 19 5640 Yekaterinburg urfu.ru

Пример 3. С помощью оператора SQL LIKE вывести записи университетов, первая буква доменного имени сайта которых содержит буквы из диапазона [k-o]:

SELECT * FROM Universities WHERE Site LIKE '[k-o]%'

Результат:

ID UniversityName Students Faculties Professores Location Site
3 Novosibirsk State University 7200 13 1527 Novosibirsk nsu.ru
4 Moscow State University 35100 39 14358 Moscow msu. e-o]%’

Результат:

ID UniversityName Students Faculties Professores Location Site
2 Saint Petersburg State University 21300 24 13126 Saint-Petersburg  spbu.ru

Оператор Excel VBA SQL с содержит

спросил

Изменено
1 год, 4 месяца назад

Просмотрено
779 раз

У меня есть таблица в Excel, которую я хочу использовать для получения некоторых показателей через SQL.

Это первая часть моего кода, которая отлично работает:

 Опция Явный
Подпрограмма MySQL()
    Dim cn как объект, rs как объект, вывод как строка, sql как строка
    Установите cn = CreateObject("ADODB.Connection")
    С Сп
        .Provider = "Microsoft.ACE.OLEDB.12.0"
        .ConnectionString = "Источник данных=" & ThisWorkbook.Path & "\" & ThisWorkbook.Name & ";" & _
        "Расширенные свойства=""Excel 12.0 Xml;HDR=YES"";"
        .Открыть
    Конец с
 

Теперь я могу получить количество записей с определенным условием, например:

 sql = "ВЫБРАТЬ COUNT(ID) FROM [Data$] WHERE [Type] = ""myType"" и [Status] = ""myStatus"""
Установите rs = cn.Execute(sql)
MsgBox (rs(0))
 

Теперь я хотел бы использовать условие СОДЕРЖИТ , но это не работает:

 sql = "ВЫБЕРИТЕ СЧЕТ(ID) ИЗ [Данные$] ГДЕ СОДЕРЖИТ([Тип], ""T"")"
Установите rs = cn.Execute(sql)
MsgBox (rs(0))
 
  • sql
  • excel
  • vba
  • содержит

4

Содержит — это нестандартная функция SQL, доступная в SQL Server (см. https://learn.microsoft.com/en-us/sql/t-sql/queries/contains-transact-sql?view= sql-сервер-ver15). Он используется для выполнения нечетких поисков всех видов.

Содержит , недоступен при запросе других источников данных (Excel, Access, Oracle…).

Если вы просто ищете подстроку, вы можете использовать как -оператор и использовать % в качестве подстановочного знака, например

 sql = "ВЫБЕРИТЕ COUNT(ID) FROM [Data$] WHERE [Type] как '%T%'"
 

'%T%' найдет все, что содержит букву T
'T%' найдет все, что начинается с буквы T
'%T' найдет все, что заканчивается на букву T
(это , конечно, не ограничиваясь одним символом, вы можете использовать '%overflow%' , если хотите).

Обратите внимание, что разные системы баз данных имеют разные правила чувствительности к регистру. Запросы Excel нечувствительны к регистру, поэтому , как %t% , и , как %T% , возвращают один и тот же результат. Это отличается от других баз данных.

Между прочим, вы должны взять за привычку использовать одинарные кавычки для постоянного текста в операторе SQL. Двойные кавычки работают в Excel, но не являются стандартом SQL и не работают в большинстве баз данных.

1

Зарегистрируйтесь или войдите в систему

Зарегистрируйтесь с помощью Google

Зарегистрироваться через Facebook

Зарегистрируйтесь, используя адрес электронной почты и пароль

Опубликовать как гость

Электронная почта

Требуется, но не отображается

Опубликовать как гость

Электронная почта

Требуется, но не отображается

LIKE vs CONTAINS в SQL Server

by Beaulin Twinkle

Хотя LIKE является оператором, а CONTAINS является предикатом и имеет несколько различий между ними, они также могут использоваться взаимозаменяемо в некоторых случаях использования. Здесь мы увидим, как использовать как LIKE, так и CONTAINS для поиска слова или фразы, а затем рассмотрим основные различия между ними (LIKE и CONTAINS).

LIKE & CONTAINS в аналогичном сценарии использования

Для начала, вот пример того, как использовать LIKE и CONTAINS для получения одного и того же результирующего набора. Для этой иллюстрации я использовал таблицу 9.0021 Application.Cities в образце базы данных Microsoft WideWorldImporters .

ИСПОЛЬЗОВАТЬ WideWorldImporters
ИДТИ
/* НРАВИТЬСЯ */
ВЫБЕРИТЕ * ИЗ Application.Cities
    ГДЕ CityName LIKE 'Xenia' ИЛИ ​​CityName LIKE 'Yale'
/* СОДЕРЖИТ */
Выберите * ИЗ Application.Cities
    ГДЕ СОДЕРЖИТ (CityName, '"Xenia" или "Yale"')
ИДТИ
 

, подобный VS, содержит

# Как Содержит
1 , вроде как нахожусь, как это используется, как это используется, как это используется, как это используется, как это используется. 9a-g]%’ и т. д. Подстановочный знак звездочки (*) будет работать, только если он используется в конце слова или фразы. Пример: «Некоторая фраза*».
5 Производительность может снизиться, если вы используете подстановочные знаки в начале шаблона, поскольку он может не использовать ни один из индексов. Поскольку подстановочные знаки можно использовать только в конце, производительность должна быть выше, поскольку он может использовать такие индексы, как полнотекстовый индекс.
6 Образец, используемый для сравнения, представляет собой строку, которая может содержать не более восьми тысяч байтов. Условие поиска: nvarchar. Большие строки, такие как varcher(max) и nvarchar(max), не принимаются.

Производительность

Как упоминалось выше в сравнении, с точки зрения производительности использование LIKE будет медленнее по сравнению с CONTAINS. Например, я выполнил приведенные выше примеры операторов для таблицы Application.