【问题标题】:How to use 'LIKE' statement with unicode strings?如何使用带有 unicode 字符串的“LIKE”语句?
【发布时间】:2010-11-23 00:59:41
【问题描述】:

我正在尝试使用 unicode 字符执行查询。我能够通过在查询前面加上N(例如:..... WHERE column=N'exact_stringâ')来执行正常的相等查询。但是当我尝试使用LIKE 时,这似乎不起作用。关于如何完成这项工作的任何想法?

示例查询: SELECT * FROM t_sample WHERE t_column LIKE N'%â%'

另外,我如何知道 SQL Server 使用哪种编码来存储 nvarcharnchar 数据类型以及它使用哪种编码在 SQL 编辑器中显示查询?

编辑:我的错。这实际上有效。我尝试在错误的窗口中执行查询。但这样做的好处是我了解了 SQL Server 中的排序规则设置。

【问题讨论】:

  • 取决于您的排序规则设置
  • 谢谢米奇。在哪里可以检查当前实例的设置?
  • 您的排序规则是每个列、每个表、每个数据库(除非另有说明,否则使用继承)。如果您执行sp_help,您应该会看到列上的排序规则是什么。

标签: sql unicode sql-server-2005 sql-like


【解决方案1】:

使用 Unicode 搜索字符串:

WHERE CONTRACTORNAME LIKE N'%ạ%'

Credit

【讨论】:

  • 这样使用:WHERE CONTRACTORNAME LIKE N'%yourstring%' COLLATE Latin1_General_BIN2
  • 短小精悍。这应该已被接受的答案
  • 这个也适合我
【解决方案2】:

确保表上的排序规则支持 unicode。

【讨论】:

  • ALL 排序规则支持 SQL Server 中的 Unicode。 Unicode 与非 Unicode 只是数据类型的问题(VARCHAR = 非 Unicode,除了从 SQL Server 2019 开始,它现在可以通过 UTF-8 成为 Unicode,NVARCHAR = 通过 UTF-16 的 Unicode)。有一些排序规则是 Unicode-only 并且不支持 8 位代码页(因此不适用于 VARCHAR),但一切都适用于 NVARCHAR
猜你喜欢
  • 2021-11-27
  • 1970-01-01
  • 2014-04-20
  • 2014-03-02
  • 2022-01-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-01-09
相关资源
最近更新 更多