【问题标题】:SQL WHERE clause does not match on columns with Latin and Thai charactersSQL WHERE 子句与拉丁文和泰文字符的列不匹配
【发布时间】:2014-10-14 01:35:00
【问题描述】:

我正在清理一个 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 列的查询)。我无法输入泰语字符。

我不知道为什么会发生这种情况,我最好的猜测是它与混合字符集有关。有什么想法吗?

【问题讨论】:

    标签: sql sql-server sql-server-2012 nvarchar thai


    【解决方案1】:

    将 N 放在文字文本之前

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

    【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-05-09
    • 2014-09-26
    • 1970-01-01
    相关资源
    最近更新 更多