Как выполнить сравнение без учета акцента (e с è, é, ê и ë) в SQL Server?
Я ищу, чтобы сравнить два varchars в SQL, один будет что-то вроде Cafe
и другие Café
есть ли способ в SQL, который позволит сравнивать два значения. Например:
SELECT *
FROM Venue
WHERE Name Like '%cafe%'
так что если есть место с названием Big Bobs Café Extraordinaire
это будет включен в результирующий набор?
4 ответа:
принуждать к акценту нечувствительным сортировка
вы также должны убедиться, что обе стороны имеют одинаковые параметры сортировки, чтобы избежать ошибок или дальнейших принудительных действий, если вы хотите сравнить с табличной переменной или временной таблицей varchar column
и потому, что постоянное значение будет иметь сопоставление обновление базы данных: только для локальных переменных, а не для константынет, даже тогдаSELECT * FROM Venue WHERE Name COLLATE Latin1_general_CI_AI Like '%cafe%' COLLATE Latin1_general_CI_AI
применяя определенный акцент нечувствительный сортировка на ваш выбор:
SELECT * FROM Venue WHERE Name COLLATE Latin1_General_CI_AI Like '%cafe%' COLLATE Latin1_General_CI_AI
ИЦ означает "без учета регистра" и AI для "акцента бесчувственным".
акцент чувствительный и акцент нечувствительный поиск может быть Дон с помощью
Latin1_general_CI_AI
здесь
AI
для акцента нечувствительный иAS
для чувствительной акцент то есть,кафе и кафе то же самое, если акцент нечувствителен.в приведенном ниже запросе
Latin1_general_CI_AI
можно разбить на следующие части.
latin1
заставляет сервер обрабатывать строки с помощью кодировки latin 1, в основном формат ascii.CI указывает чувствительны к регистру, поэтому "Азбука" составляет "Азбука".
- 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