Выполнение регистронезависимого поиска в SQL Server может быть обычным требованием во многих сценариях. В этой статье мы рассмотрим, как достичь этого с помощью сортировки.
Давайте начнем с создания таблицы с регистрозависимым столбцом:
CREATE DATABASE MyDB
GO
CREATE TABLE CaseSensitive (Col1 VARCHAR(100) COLLATE SQL_Latin1_General_CP1_CS_AS )
GO
INSERT INTO CaseSensitive (Col1)
VALUES ('ABC'), ('abc'), ('aBc')
GO
Теперь, если мы попытаемся выполнить регистрозависимый поиск с использованием следующего запроса, мы не получим результатов:
SELECT *
FROM CaseSensitive
WHERE Col1 = 'AbC'
GO
Это происходит потому, что строка в условии WHERE не соответствует значениям в таблице с учетом регистра.
Чтобы получить данные, не учитывая регистр, мы можем использовать сортировку в условии WHERE:
SELECT *
FROM CaseSensitive
WHERE Col1 COLLATE SQL_Latin1_General_CP1_CI_AS = 'AbC'
GO
Указав сортировку SQL_Latin1_General_CP1_CI_AS
, мы делаем поиск регистронезависимым. Запуск вышеуказанного сценария извлечет все три значения, уже вставленные в таблицу.
Сортировка относится к набору правил, которые определяют, как данные сортируются и сравниваются. В SQL Server сортировки предоставляют правила сортировки, свойства регистрозависимости и свойства учета ударений для ваших данных. При выборе сортировки для вашего сервера, базы данных, столбца или выражения вы назначаете определенные характеристики вашим данным.
Вы можете найти все поддерживаемые сортировки в SQL Server в официальной документации.
Использование сортировки – мощный метод выполнения регистронезависимого поиска в SQL Server. Если у вас есть опыт или примеры использования сортировки, не стесняйтесь делиться ими в разделе комментариев ниже.