【问题标题】:SQL column collation changeSQL 列排序规则更改
【发布时间】:2015-04-03 22:39:13
【问题描述】:

我想将列排序规则更改为某种波兰排序规则,并能够正确查看波兰字符。原列、原表、原库三者均使用SQL_Scandinavian_CP850_CS_AS。

对于我尝试的列排序规则更改:

SELECT CAST([ColumnName] AS nvarchar(50)) COLLATE Polish_CI_AS FROM t1

这 3 个示例字母出现在斯堪的纳维亚表中:

SELECT 'ØùÒ' COLLATE Polish_CI_AS

应该返回结果łŚń。而是显示“OuO”。

【问题讨论】:

  • 列的数据类型是什么,varchar 还是 nvarchar?
  • 在原始数据库中它是 varchar。
  • 试试“SELECT N'ØùÒ' COLLATE Polish_CI_AS”,它可能会有所帮助。 (我不太了解 SQL Server。)但是只要您只查看值,排序规则就很重要吗? (比较/排序值时很重要。)

标签: sql sql-server-2012 collation


【解决方案1】:

不幸的是,SQL Server 不支持 OEM 代码页 852,如果要将“ØùÒ”转换为“łŚń”,则需要将代码页 850 数据转换为该代码页。您可以更改数据的排序规则,而无需 SQL Server 通过 varbinary 进行 CAST 进行字符映射,但这仅适用于受支持的排序规则。

另一种方法可能是创建一个用户定义的函数,该函数接受一个字符串并一次映射一个字符,因此 Ø 映射到 ł 等。繁琐的操作,有(最多)127 个字符地图,但并不难。

【讨论】:

    猜你喜欢
    • 2011-02-13
    • 2011-03-28
    • 2016-11-17
    • 1970-01-01
    • 2011-04-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-11-12
    相关资源
    最近更新 更多