Собесов

LIKE-шаблон: коды товаров, где третья буква — X

SQLLIKE и шаблоныЛёгкаяJunior

Условие

Нужно выбрать коды товаров, у которых третья букваX (например, ABX12, 12X45).

  • A) LIKE '_ _ _X%'
  • B) LIKE '_ _X%'
  • C) LIKE 'X%'
  • D) LIKE '%X'

Решение

Правильный ответ: B.

В SQL-шаблонах LIKE:

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

Чтобы третий символ строки был X, нужно «зафиксировать» позицию: первые два символа любые (__), затем X, дальше что угодно (%).

шаблон: __X%
позиция: 1 2 3 4...
         ^ ^ ^
        any any X any-tail

Разбор вариантов

  • A ___X% — три любых символа, потом X. Это «четвёртая буква = X» (например, ABCX...). Не подходит.
  • B __X% — два любых символа, потом X, потом что угодно. Это правильно — третья буква = X.
  • C X% — строка начинается с X. Это «первая буква = X».
  • D %X — строка заканчивается на X. Это «последняя буква = X».

Проверка

SELECT 'ABX12' LIKE '__X%';  -- TRUE
SELECT '12X45' LIKE '__X%';  -- TRUE
SELECT 'ABCX1' LIKE '__X%';  -- FALSE (X на 4-й позиции)
SELECT 'X1234' LIKE '__X%';  -- FALSE (X на 1-й)

Подводные камни

  1. Считать пробелы в шаблоне частью паттерна. В оригинале вопроса '_ _ _X%' иногда пишут с пробелами — но в SQL пробел в шаблоне — это пробел в строке. Здесь пробелы — просто визуальное разделение, реальный шаблон без них.
  2. Регистр. LIKE 'x%' в PostgreSQL чувствителен к регистру — 'X1' LIKE 'x%' вернёт FALSE. Используйте ILIKE или LOWER().
  3. Экранирование. Если ищете букву _ или % — пишите LIKE 'a\_b' ESCAPE '\'.

Эталонный ответ

B) LIKE '__X%' — два любых символа + X + хвост.

Хочешь увидеть разбор?

Зарегистрируйся бесплатно — откроется развёрнутое решение этой задачи и ещё 4 на выбор.

Зарегистрироваться и увидеть разбор
Уже есть аккаунт? Войти