SQL: Like и NOT LIKE?

Ссылка скопирована
26 февраля 2026 1 ответ

Стандартная задача: в таблице Product найти модели, которые состоят только из цифр или только из латинских букв (A-Z, без учета регистра).
Вывод: номер модели, тип модели.

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

SELECT model, type FROM Product WHERE model NOT like '%[^0-9]%' OR upper(model) NOT like '%[^A-Z]%'

SELECT model, type FROM Product WHERE model NOT like '%[^0-9]%' OR upper(model) NOT like '%[^A-Z]%'

Не могу понять, почему именно NOT LIKE, а не просто LIke в запросе? Разве NOT like '%[^....] не является просто LIKE как двойное отрицание?

Дополнительно:

Это какой диалект SQL? не припомню чтобы LIKE работал с регулярными выражениями

  • Не могу понять, почему именно NOT LIKE, а не просто LIke в запросе ? Разве NOT like '%[^....] не является просто LIKE как двойное отрицание ?

    Потому что кроме цифр и букв есть и другие символы, которые ты можешь замаскировать шаблонным символом процента.

    А ещё потому что в шаблоне LIKE невозможно задать начало и конец тестируемого выражения.

    В простом LIKE ты, например, задашь выражение "в проверяемом значении есть цифры". Согласись, это совсем не то же самое, чем "в проверяемом значении нет не-цифры".

  • Akina, спасибо! Всё предельно ясно, на помощь приходит просто русский язык))
  • Ответы:

    LIKE не работает с регулярками. В этом твоя ошибка

    • Это неверное утверждение. LIKE использует свой особый сильно кастрированный вариант регулярных выражений с минимумом шаблонных конструкций (всего два подстановочных символа плюс экранирующий). Но тем не менее это именно вариант регулярного выражения.
    • Akina, я ответил применительно к тому запросу, который написал автор вопроса. А у него именоо полноценное регулярное выражение
    • Agent Smith, если я правильно догадываюсь, то речь о задачке с sql-ex. А там SQL Server, который трактует LIKE чуть пошире - в частности, понимает в шаблоне LIKE группы символов в квадратной скобке. https://docs.microsoft.com/ru-ru/sql/t-sql/languag...
    Нужно решить такую задачу?

    Опишите проблему, и специалист поможет с настройкой, исправлением ошибки или доработкой сайта. Подберём понятный план работ без лишней переписки.

    Заказать помощь
    Лучший ответ
    1
    Андрей PHP Ответ

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

    Оператор LIKE позволяет использовать специальные символы для создания шаблонов. Например, символ "%" обозначает любую последовательность символов, а "_" - один любой символ. Таким образом, запрос "SELECT * FROM table WHERE column LIKE 'abc%'" вернет все строки, в которых значение столбца column начинается с "abc".

    Оператор NOT LIKE, как следует из названия, исключает строки, которые соответствуют шаблону. Например, запрос "SELECT * FROM table WHERE column NOT LIKE '%xyz%'" вернет все строки, в которых значение столбца column не содержит подстроку "xyz".

    Операторы LIKE и NOT LIKE могут быть использованы совместно с другими операторами, такими как AND, OR и IN, для создания более сложных условий поиска. Например, запрос "SELECT * FROM table WHERE column LIKE 'a%' AND column NOT LIKE '%b%'" вернет все строки, в которых значение столбца column начинается с буквы "a" и не содержит букву "b".

    Использование операторов LIKE и NOT LIKE позволяет эффективно фильтровать данные в SQL и находить нужную информацию с помощью заданных шаблонов. Однако следует помнить, что использование LIKE с шаблонами, начинающимися с "%", может привести к медленной работе запросов из-за неэффективного использования индексов. Поэтому при составлении запросов с использованием LIKE и NOT LIKE стоит учитывать особенности работы с индексами и оптимизировать запросы для повышения производительности базы данных.

    Другие ответы (0)

    Пока нет других ответов. Будьте первым, кто поможет автору.

    Ответить на вопрос

    комментарий

    Ваш адрес email не будет опубликован. Обязательные поля помечены *

    Вам также может быть интересно