Published on

February 16, 2020

Как выполнить регистронезависимый поиск в SQL Server

Выполнение регистронезависимого поиска в 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. Если у вас есть опыт или примеры использования сортировки, не стесняйтесь делиться ими в разделе комментариев ниже.

Click to rate this post!
[Total: 0 Average: 0]

Let's work together

Send us a message or book free introductory meeting with us using button below.