Проверка версии SQL сервера в T-SQL: оператор Like, переменные

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

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

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

При проверке значений переменных в T-SQL используйте оператор LIKE:

  • Воспользуйтесь выражением LIKE @Переменная + '%' для поиска строк, начинающихся с подставленной переменной.
  • Используйте LIKE '%' + @Переменная + '%' для отыскания строк, которые содержат указанную переменную.
SQL
Скопировать код
DECLARE @КлючевоеСлово NVARCHAR(100) = 'ИщиМеня';

-- Проверка StartsWith:
SELECT * FROM Таблица WHERE Столбец LIKE @КлючевоеСлово + '%';

-- Проверка Contains:
SELECT * FROM Таблица WHERE Столбец LIKE '%' + @КлючевоеСлово + '%';

Вместо Таблица и Столбец указываются реальные имена, также определяется значение вашего @КлючевоеСлово.

Кинга Идем в IT: пошаговый план для смены профессии

Изучаем детальнее: От основных моментов к подробностям

Подстановочные символы: Костяк оператора LIKE

Символ % играет важную роль при использовании оператора LIKE:

  • LIKE 'Данные%' найдёт состояние "БазеДанных", "ДанныеНауки" и аналогичные строки, начинающиеся на "Данные".
  • LIKE 'Данные_' подойдёт для односимвольных добавлений, например: "ДанныеЧ" или "Данные1", но не для "Данные12".
  • LIKE 'Данные%Центр_' найдёт строки типа "ДанныеЦентр1" или "ДанныеЦентрА", продемонстрировав гибкость данного подхода.

Работаем с чувствительностью к регистру

Используйте функции UPPER() или LOWER(), чтобы обеспечить независимость от регистра:

SQL
Скопировать код
SELECT * FROM Таблица WHERE UPPER(Столбец) LIKE UPPER(@КлючевоеСлово + '%');

Различные типы данных: Работаем со сменой типов

В случаях, когда требуется работать с функциями, не принимающими строки, проведите приведение типов данных:

SQL
Скопировать код
DECLARE @ИмяВерсии NVARCHAR(256) = CAST(SERVERPROPERTY('Edition') AS NVARCHAR(256));

Переходим к другим функциям: CHARINDEX для проверки StartsWith

Функция CHARINDEX предлагает дополнительный способ определения начала подстроки:

SQL
Скопировать код
DECLARE @ЭкспрессБит BIT;
IF CHARINDEX('Express Edition', @ИмяВерсии) = 1 
    SET @ЭкспрессБит = 1; 
ELSE
    SET @ЭкспрессБит = 0;

Краткость — это заслуга функции IIF

Функция IIF, доступная начиная с SQL Server 2012, позволяет проверять условия более кратко:

SQL
Скопировать код
SET @ЭкспрессБит = IIF(LEFT(@ИмяВерсии, 15) = 'Express Edition', 1, 0);

Используем PATINDEX для более сложных паттернов

Функция PATINDEX отличается продвинутым поиском по шаблонам и будет полезна тем, кто любит работать с регулярными выражениями:

SQL
Скопировать код
-- Поиск позиции числовой последовательности в строке.
SELECT PATINDEX('%[0-9]%', Столбец) FROM Таблица;

Визуализация: Одно изображение заменит тысячу строк кода!

Представьте, что ваша таблица в базе данных – это книжная полка 📚. Каждая книга – это строка, а название на корешке – это ваш столбец. В таком случае:

Для поиска книги, начинающейся на 'Гарри':

SQL
Скопировать код
SELECT * FROM 📚 WHERE 🏷️ LIKE 'Гарри%';

Для поиска книги, содержащей слово 'Магия':

SQL
Скопировать код
SELECT * FROM 📚 WHERE 🏷️ LIKE '%Магия%';

Практические сценарии: От единичных примеров до обычных задач

Динамические строковые шаблоны: Одна строка, чтобы проверять все

Динамический SQL обеспечивает необходимую гибкость, однако требует осторожного применения.

SQL
Скопировать код
SET @SQLCommand = 'SELECT * FROM ' + @ИмяТаблицы + ' WHERE ' + @ИмяСтолбца + ' LIKE ''' + @ШаблонПоиска + '%''';
EXEC sp_executeSQL @SQLCommand;

Дилемма специальных символов

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

SQL
Скопировать код
-- Поиск символа процента в строке:
SELECT * FROM Таблица WHERE Столбец LIKE '%[%]%' ESCAPE '[';

Поиск по нескольким шаблонам: Расширяем возможности

Можно комбинировать подстановочные символы для поиска сложных комбинаций строк:

SQL
Скопировать код
-- Поиск строк, содержащих 'ing', за которым следует 'data':
SELECT * FROM Таблица WHERE Столбец LIKE '%ing%data%';

Избегание подводных камней: Поддерживаем эффективность

В больших базах данных необдуманное использование шаблонов с % может привести к снижению производительности. Индексированные представления или полнотекстовый индекс помогут оптимизировать процесс.

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

  1. LIKE (Transact-SQL) – SQL Server | Microsoft Learn — детальный справочник по оператору LIKE в T-SQL.
  2. CHARINDEX (Transact-SQL) – SQL Server | Microsoft Learn — руководство по взаимодействию с функцией CHARINDEX.
  3. PATINDEX (Transact-SQL) – SQL Server | Microsoft Learn — рассказ о функции PATINDEX для работы с шаблонами.
  4. Полнотекстовый поиск – SQL Server | Microsoft Learn — всё о полнотекстовом поиске в SQL Server для сложных поисковых запросов.