Как выполнить сравнение без акцента (e с è, é, ê и ë) в SQL Server?
Я хочу сравнить два varchars в SQL, один из них будет похож на Cafe
, а другой Café
есть способ в SQL, который позволит сравнивать два значения. Например:
SELECT *
FROM Venue
WHERE Name Like '%cafe%'
Итак, если есть место с именем Big Bobs Café Extraordinaire
, оно будет включено в результирующий набор?
Ответы
Ответ 1
Принуждение к акценту нечувствительно сопоставление
Вам также необходимо убедиться, что обе стороны имеют одинаковую сортировку, чтобы избежать ошибок или дальнейших принуждений, если вы хотите сравнить с табличной переменной или столбцом varchar таблицы temp
и потому что значение константы будет иметь сортировку базы данных Update: только для локальных переменных, а не для констант nope, даже не тогда
SELECT *
FROM Venue
WHERE
Name COLLATE Latin1_general_CI_AI Like '%cafe%' COLLATE Latin1_general_CI_AI
Ответ 2
Применив к вашему выбору специальный чувствительный к акценту сопоставление:
SELECT *
FROM Venue
WHERE Name COLLATE Latin1_General_CI_AI Like '%cafe%' COLLATE Latin1_General_CI_AI
CI означает "нечувствительный к регистру" и AI для "Accent Insensitive".
Ответ 3
если "A" COLLATE SQL_Latin1_General_CP1_CS_AS = 'a' COLLATE SQL_Latin1_General_CP1_CS_AS
SELECT N'Yes '
ELSE
SELECT N'No '
Ответ 4
Акцент чувствительный и нечувствительный поиск не может быть использован с помощью Latin1_general_CI_AI
Здесь AI
для Accent Insensitive и AS
для Accent Sensitive
т.е. Café и Cafe совпадают, если Accent Insensitive.
В нижеприведенном запросе Latin1_general_CI_AI
можно разбить на следующие части.
-
latin1
заставляет сервер обрабатывать строки с использованием charset latin 1, в основном ascii.
-
CI указывает нечувствительность к регистру, поэтому "ABC" равно "abc".
- AI указывает нечувствительность к акценту, поэтому 'ü' равно 'u'.
Ваш запрос должен выглядеть следующим образом:
SELECT * FROM Venue WHERE Name COLLATE Latin1_general_CI_AI Like '%cafe%' COLLATE Latin1_general_CI_AI
Ожидаемый Результат выглядит следующим образом:
Id name
1 Café
2 Cafe