Выборка строк SQL с заданными словами в поле: примеры

Пройдите тест, узнайте какой профессии подходите

Я предпочитаю
0%
Работать самостоятельно и не зависеть от других
Работать в команде и рассчитывать на помощь коллег
Организовывать и контролировать процесс работы

Быстрый ответ

Используя оператор LIKE в SQL в сочетании с универсальным символом %, вы можете выбрать строки, в которых присутствует заданное слово:

SQL
Скопировать код
SELECT * FROM table WHERE column LIKE '%word%'; -- Познакомьтесь с подстановочными символами!

Такой запрос вернёт все записи таблицы table, в поле column которых присутствует 'word'. Если условий несколько, связать их между собой можно с помощью AND:

SQL
Скопировать код
SELECT * FROM table WHERE column LIKE '%word1%' AND column LIKE '%word2%'; -- Важны все условия. Без исключения!
Кинга Идем в IT: пошаговый план для смены профессии

Увеличение производительности с использованием полнотекстового поиска

Когда ваш набор данных превращается в огромного монстра, LIKE с использованием подстановочных символов % может демонстрировать низкую производительность. На помощь приходит полнотекстовый поиск. Базы данных, такие как SQL Server, MySQL и PostgreSQL, поддерживают данную технологию, позволяющую настроить более детальные параметры поиска и улучшить производительность.

В SQL Server применение CONTAINS выглядит довольно просто:

SQL
Скопировать код
SELECT * FROM table WHERE CONTAINS(column, 'word1 AND word2'); -- Сэкономьте время, используя 'CONTAINS'.

Не забывайте про индексацию столбцов для оптимальной работы полнотекстового поиска.

Работа с регистром и NULL

Иногда приходится тщательно обрабатывать данные, включая регистр. Можно использовать такие функции как LOWER или UPPER, чтобы сравнивать значения с учётом регистра:

SQL
Скопировать код
SELECT * FROM table WHERE LOWER(column) LIKE LOWER('%word%'); -- Тише ездишь – дальше будешь.

Будьте осторожны с зловредными NULL, которые могут привести к тому, что строки будут непредвиденно исключены из результата:

SQL
Скопировать код
SELECT * FROM table WHERE column IS NOT NULL AND column LIKE '%word%'; -- `NULL` тут ни к чему!

Работа с текстом: новый виток обработки

Разделение и слияние

Если вам важно каждое слово как самостоятельная единица, вы можете разбивать строки на слова с помощью таких инструментов, как табличные функции или рекурсивные общие табличные выражения CTE. Затем можно проводить детальный анализ:

SQL
Скопировать код
SELECT * 
FROM table 
INNER JOIN (SELECT value FROM STRING_SPLIT(column, ' ')) as split_words 
ON column LIKE '%' + split_words.value + '%'; -- Бах! И слова разделены моментально!

Использование подстрок и функций нахождения позиции

Разделите свою строку на части с помощью извлечения подстрок через SUBSTRING и вычислите суть, применив определение позиции через CHARINDEX или LOCATE. Ваши запросы станут безграничными:

SQL
Скопировать код
SELECT * FROM table WHERE CHARINDEX('word', column) > 0; -- 'Word’ есть везде, где нужно!

Ускорение запросов

Добавьте дополнительную динамику используя временные таблицы для сохранения промежуточных результатов, а также DISTINCT для исключения излишних дублей:

SQL
Скопировать код
SELECT DISTINCT * FROM table WHERE column LIKE '%word%'; -- Не пройдут дубликаты!

Вычистите данные от ненужных записей используя LEFT JOIN и проверку на NULL в условии объединения.

Визуализация

Предположим, мы ищем определённые фрукты в мешке, наполненном самыми разными продуктами 🛍️:

Markdown
Скопировать код
Мешок с покупками: [🍌, 🧀, 🍞, 🍎, 🍪, 🍎]

SQL SELECT WHERE – это наша лупа 🔍, с её помощью вы можете обнаружить все яблоки:

SQL
Скопировать код
SELECT * FROM bag WHERE item LIKE '%apple%'; -- Кто спрятал все яблоки?

И вот что мы нашли:

Markdown
Скопировать код
Найдено: [🍎, 🍎] -- Вдвойне приятнее!

Яблоки становятся основной целью, несмотря на остальной ассортимент продуктов.

Полезные материалы

  1. SQL LIKE Operator – W3SchoolsПодробное описание использования оператора LIKE для эффективного сопоставления данных.
  2. Full-Text Search – SQL Server | Microsoft LearnРуководство по продвинутым методам полнотекстового поиска в SQL Server.
  3. SQL – Like Operator – Tutorialspoint — Примеры практического применения оператора LIKE.
  4. MySQL String Functions and OperatorsРуководство по работе со строками для составления запросов в MySQL.
  5. PostgreSQL: Documentation – Pattern MatchingОфициальная подборка методов PostgreSQL для эффективного сопоставления данных.
  6. Understanding Full-Text Indexing in SQL Server – Simple Talk — Подробное описание того, как SQL Server работает с полнотекстовым индексированием.