SQL WHERE 子句与拉丁文和泰文字符的列不匹配
Posted
技术标签:
【中文标题】SQL WHERE 子句与拉丁文和泰文字符的列不匹配【英文标题】:SQL WHERE clause does not match on columns with Latin and Thai characters 【发布时间】: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 列的查询)。我无法输入泰语字符。
我不知道为什么会发生这种情况,我最好的猜测是它与混合字符集有关。有什么想法吗?
【问题讨论】:
【参考方案1】:将 N 放在文字文本之前
SELECT * FROM Tariff.NationalTariff WHERE TariffDescription = N'Thai description: - - ที่มีสภาพเหลว';
【讨论】:
是的,这解决了问题。谢谢。我在 T-SQL 中将其指定为 NVARCHAR 字符串之前的 N 前缀上快速搜索了一下。 ***.com/questions/10025032/…以上是关于SQL WHERE 子句与拉丁文和泰文字符的列不匹配的主要内容,如果未能解决你的问题,请参考以下文章