SQL列排序规则更改

SQL列排序规则更改,sql,sql-server-2012,collation,Sql,Sql Server 2012,Collation,我想将一个列排序规则更改为一些波兰语排序规则,并能够正确地查看波兰语字符。所有三个,原始列、原始表和原始数据库,都使用SQL_Scandinavian_CP850_CS_AS 对于列排序规则更改,我尝试了: SELECT CAST([ColumnName] AS nvarchar(50)) COLLATE Polish_CI_AS FROM t1 这3个示例字母出现在斯堪的纳维亚表格中: SELECT 'ØùÒ' COLLATE Polish_CI_AS 应该返回结果。相反,它显示“OuO”

我想将一个列排序规则更改为一些波兰语排序规则,并能够正确地查看波兰语字符。所有三个,原始列、原始表和原始数据库,都使用SQL_Scandinavian_CP850_CS_AS

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

SELECT CAST([ColumnName] AS nvarchar(50)) COLLATE Polish_CI_AS FROM t1
这3个示例字母出现在斯堪的纳维亚表格中:

SELECT 'ØùÒ' COLLATE Polish_CI_AS

应该返回结果
。相反,它显示“OuO”。

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


另一种方法可能是创建一个用户定义的函数,该函数一次获取一个字符串并映射字符,因此Ø映射到ł等。要精确地映射,有(最多)127个字符,但并不困难。

列的数据类型是什么,varchar还是nvarchar?在原始数据库中是varchar。请尝试“选择N'ØùÒ'COLLATE Polish_CI_AS”,这可能会有所帮助。(我对SQL Server不太了解。)但只要您只查看值,排序就很重要吗?(比较/排序值时很重要。)我想使用Excel pivot表访问最终的SQL结果。在Excel中,可能有某种方法可以即时进行此转换?