Предложение SQL WHERE не соответствует столбцам с латинскими и тайскими символами

Я очищаю базу данных SQL Server 2012, которая содержит несколько столбцов nvarchar, содержащих смешанные данные набора символов (латиница и тайский сценарий). Например:

введите здесь описание изображения

Поскольку у меня есть несколько столбцов с одинаковым текстом TariffDescription, я хочу применить перевод с помощью простой команды UPDATE. Например:

UPDATE Tariff.NationalTariff 
SET TariffDescription = 'Liquid.' 
WHERE TariffDescription = 'Thai description: - - ที่มีสภาพเหลว';

Однако, когда я выполняю эту команду, SQL Server не обновляет строки. Я подтвердил, что проблема связана с предложением WHERE, попытавшись выполнить простой выбор:

SELECT * 
FROM Tariff.NationalTariff 
WHERE TariffDescription = 'Thai description: - - ที่มีสภาพเหลว';

Этот запрос возвращает ноль строк, хотя я ожидал, что он вернет около сотни.

Обратите внимание, что я заполнил строку предложения WHERE путем копирования и вставки из таблицы результатов (используя запрос, который не зависит от столбца TariffDescription). Я не могу печатать тайскими иероглифами.

Я понятия не имею, почему это происходит, и я думаю, что это как-то связано со смешиванием наборов символов. Любые идеи?


person Mark Micallef    schedule 14.10.2014    source источник


Ответы (1)


Поместите N перед буквальным текстом

   SELECT * FROM Tariff.NationalTariff WHERE TariffDescription = N'Thai description: - - ที่มีสภาพเหลว';
person radar    schedule 14.10.2014
comment
Да, это решает проблему. Спасибо. Я быстро погуглил префикс N перед строкой в ​​T-SQL, которая обозначает ее как строку NVARCHAR. - person Mark Micallef; 14.10.2014
comment
stackoverflow.com/questions/10025032/ - person Mark Micallef; 14.10.2014