← Назад к вопросам

Как задавал параметр like

1.3 Junior🔥 52 комментариев
#Другое

Комментарии (2)

🐱
deepseek-v3.2PrepBro AI5 апр. 2026 г.(ред.)

Ответ сгенерирован нейросетью и может содержать ошибки

Использование оператора LIKE в SQL для поиска по шаблону

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

Основные метасимволы (wildcards)

Для формирования шаблонов LIKE использует два специальных символа:

  • % (процент) — заменяет любое количество символов (включая ноль символов).
  • _ (нижнее подчёркивание) — заменяет ровно один любой символ.

Синтаксис и базовые примеры

Оператор используется в предложении WHERE. Базовый синтаксис:

SELECT column1, column2, ...
FROM table_name
WHERE columnN LIKE pattern;

Примеры использования:

1. Поиск строк, начинающихся с определённой подстроки:

Найти всех сотрудников, чьи имена начинаются на "Ал".

SELECT * FROM employees
WHERE first_name LIKE 'Ал%';

Это найдёт "Алексей", "Алина", "Ал" и т.д.

2. Поиск строк, заканчивающихся определённой подстроокой:

Найти все товары, артикул которых заканчивается на "-2023".

SELECT * FROM products
WHERE article LIKE '%-2023';

3. Поиск строк, содержащих подстроку в любом месте:

Найти все записи логов, где в сообщении содержится слово "Ошибка".

SELECT * FROM system_log
WHERE message LIKE '%Ошибка%';

4. Комбинация _ и % для точной маски:

Найти телефоны в формате "+7-xxx-xxx-xx-xx", где известны только первые три цифры после кода (916).

SELECT * FROM contacts
WHERE phone LIKE '+7-916-___-__-__';

Это найдёт номера типа +7-916-123-45-67, но не +7-916-12-345-67.

Важные особенности и практика для QA

  1. Регистрозависимость: Поведение LIKE зависит от колляции (collation) базы данных. Для регистронезависимого поиска часто используется функция LOWER() или UPPER().

    SELECT * FROM users WHERE LOWER(username) LIKE '%test%';
    
  2. Экранирование специальных символов: Если нужно найти сам символ % или _, его необходимо экранировать. Способы различаются в СУБД:

    *   **PostgreSQL:** Используется ключевое слово `ESCAPE`.
    ```sql
    SELECT * FROM files WHERE name LIKE '%\%%' ESCAPE '\';
    ```
    *   **MS SQL Server:** Часто используется квадратная скобка.
    ```sql
    SELECT * FROM discounts WHERE description LIKE '%[%]%';
    ```

3. Производительность: Использование LIKE с шаблоном, начинающимся с % (например, '%text'), отключает использование стандартных индексов и может привести к полному сканированию таблицы (FULL SCAN). Это критично для больших таблиц. Для оптимизации таких запросов используются полнотекстовые индексы или специализированные СУБД (например, Elasticsearch).

  1. Тестирование краевых случаев (Boundary Testing): При тестировании функционала поиска с использованием LIKE необходимо проверять:
    *   Пустую строку (`''`).
    *   Строки, состоящие только из спецсимволов (`%`, `_`).
    *   Очень длинные строки.
    *   Юникод-символы (эмодзи, иероглифы).
    *   SQL-инъекции (попытки подставить дополнительные кавычки или SQL-команды в поисковый запрос).

Вывод для QA Engineer: Понимание работы оператора LIKE позволяет не только грамотно составлять запросы для проверки данных, но и проектировать более эффективные тестовые сценарии для проверки поискового функционала приложения, предвосхищая потенциальные проблемы с производительностью и безопасностью.

Как задавал параметр like | PrepBro