【问题标题】:SQL LIKE Operator doesn't work with Asian Languages (SQL Server 2008)SQL LIKE 运算符不适用于亚洲语言 (SQL Server 2008)
【发布时间】:2011-06-09 13:56:38
【问题描述】:

亲爱的朋友们, 我遇到了一个从未想过的问题。我的问题似乎太简单了,但我找不到解决方案。 我有一个 NVarchar 类型的 sql server 数据库列,并用标准波斯字符填充。当我尝试对其运行包含 LIKE 运算符的非常简单的查询时,结果集变为空,尽管我知道查询项存在于表中。这是一个非常简单的示例查询,它的行为并不正确: SELECT * FROM T_Contacts WHERE C_ContactName LIKE '%ف%'

ف 是一个波斯字符,ContactName 列包含多个包含该字符的条目。

请告诉我应该如何重写表达式或者我应该应用什么更改。请注意,我的数据库的排序规则是 SQL_Latin1_General_CP1_CI_AS。

非常感谢

【问题讨论】:

    标签: sql-server select unicode collation nvarchar


    【解决方案1】:

    此外,如果这些值存储为 NVARCHAR(我希望它们是!!),您应该始终对任何字符串文字使用 N'..' 前缀,以确保您没有t 将任何不需要的转换返回到非 Unicode VARCHAR。

    所以你应该搜索:

    SELECT * FROM T_Contacts 
    WHERE C_ContactName COLLATE Persian_100_CI_AS LIKE N'%ف%'
    

    【讨论】:

      【解决方案2】:

      不应该是:

       SELECT * FROM T_Contacts WHERE C_ContactName LIKE N'%ف%'
      

      即,比较字符串前面有N,所以它把它当作nvarchar?

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2012-11-27
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2015-01-27
        • 1970-01-01
        • 2016-04-16
        相关资源
        最近更新 更多