Как использовать оператор LIKE со строками Unicode?

Я пытаюсь выполнить запрос с символами Юникода. Я смог выполнить обычный запрос на равенство, добавив N к запросу (например: ..... WHERE column=N'exact_stringâ'). Но это не работает, когда я пытаюсь использовать LIKE. Любые идеи о том, как заставить это работать?

Пример запроса: SELECT * FROM t_sample WHERE t_column LIKE N'%â%'

Кроме того, как я могу узнать, какую кодировку использует SQL Server для хранения типа данных nvarchar или nchar и какую кодировку он использует для отображения запроса в редакторе SQL?

РЕДАКТИРОВАТЬ: Мой плохой. Это действительно работает. Я попытался выполнить запрос в неправильном окне. Но плюс в том, что я узнал о параметрах сортировки в SQL Server.


person rkg    schedule 23.11.2010    source источник
comment
зависит от вашей настройки сопоставления   -  person Mitch Wheat    schedule 23.11.2010
comment
Спасибо, Митч. Где я могу проверить этот параметр для текущего экземпляра?   -  person rkg    schedule 23.11.2010
comment
Ваша сортировка выполняется по столбцу, по таблице, по базе данных (с использованием наследования, если не указано иное). Если вы сделаете sp_help, вы должны увидеть, какова сортировка столбцов.   -  person    schedule 23.11.2010


Ответы (2)


Убедитесь, что параметры сортировки в вашей таблице поддерживают Unicode.

person Brad    schedule 23.11.2010
comment
ВСЕ параметры сортировки поддерживают Unicode в SQL Server. Сравнение Unicode и non-Unicode — это просто вопрос типа данных (VARCHAR = не-Unicode, за исключением, начиная с SQL Server 2019, когда теперь это может быть Unicode через UTF-8, и NVARCHAR = Unicode через UTF-16). Некоторые сопоставления предназначены только для Unicode и не поддерживают 8-битную кодовую страницу (поэтому не работают с VARCHAR), но все работает с NVARCHAR. - person Solomon Rutzky; 13.02.2020

Используйте строку поиска Unicode:

WHERE CONTRACTORNAME LIKE N'%ạ%'

Кредит

person Shimmy Weitzhandler    schedule 24.12.2015
comment
Используйте этот способ: WHERE CONTRACTORNAME LIKE N'%yourstring%' COLLATE Latin1_General_BIN2 - person Osify; 14.09.2018
comment
Коротко и красиво. Это должен был быть принятый ответ - person Tejasvi Hegde; 30.12.2019