Задача:
Напишите вместо пропуска в запросе выражение, которое выведет строки, при условии наличия значения столбца telephone «сколько угодно и каких угодно цифр впереди, после - число 45 и одна любая цифра в окончании»:
SELECT * FROM table WHERE telephone LIKE '[ПРОПУСК]'
Решение:
Для поиска строк по шаблону в SQL используется оператор LIKE в сочетании с подстановочными символами (wildcard characters). В MS SQL Server (и большинстве других СУБД) используются следующие подстановочные символы:
%(процент): Представляет любую последовательность из нуля или более символов._(подчеркивание): Представляет любой одиночный символ.
Разберем требуемый шаблон:
- «сколько угодно и каких угодно цифр впереди»: Это означает любую последовательность цифр (или любых символов, если не уточняется, что это именно цифры). Для этого используется
%. - «после - число 45»: Это означает, что после предыдущей части должна идти строка "45".
- «и одна любая цифра в окончании»: Это означает, что после "45" должен идти ровно один любой символ. Для этого используется
_.
Объединяя эти части, получаем шаблон:
%(сколько угодно и каких угодно символов)45(число 45)_(одна любая цифра/символ в окончании)
Таким образом, пропущенное выражение будет '%45_'.
Полный запрос будет выглядеть так:
SELECT * FROM table WHERE telephone LIKE '%45_'
Пояснение:
В языке SQL:
SELECT *: Выбирает все столбцы из таблицы.FROM table: Указывает, что данные берутся из таблицы с именемtable.WHERE telephone LIKE '%45_': Это условие фильтрации, которое использует операторLIKEдля поиска по шаблону.telephone: Столбец, в котором производится поиск.LIKE: Оператор для сравнения строк по шаблону.'%45_': Шаблон поиска.%: Соответствует любой последовательности символов (включая пустую строку) в начале значения.45: Соответствует точной последовательности символов "45"._: Соответствует ровно одному любому символу в конце значения.
Этот запрос выберет все строки из таблицы, где значение в столбце telephone соответствует шаблону: начинается с любой последовательности символов, затем содержит "45", и заканчивается ровно одним любым символом.
