我正在查询使用SQL_Latin1_General_CP850_BIN2排序规则的SQL Server数据库.其中一个表行的varchar值包含+/-字符(Windows-1252代码页中的十进制代码177).
当我直接在SQL Server Management Studio中查询表时,我得到一个乱码而不是此行中的+/-字符.当我将此表用作SSIS包中的源时,目标表(使用典型的SQL_Latin1_General_CP1_CI_AS排序规则)最终会得到正确的+/-字符.
我现在必须构建一个直接查询源表而不使用SSIS的机制.我怎么做到这一点,我得到正确的字符而不是乱码?我的猜测是我需要将列转换/转换为SQL_Latin1_General_CP1_CI_AS排序规则,但这不起作用,因为我不断得到一个胡言乱语的字符.
我试过以下没有运气:
select
columnName collate SQL_Latin1_General_CP1_CI_AS
from tableName
select
cast (columnName as varchar(100)) collate SQL_Latin1_General_CP1_CI_AS
from tableName
select
convert (varchar, columnName) collate SQL_Latin1_General_CP1_CI_AS
from tableName
Run Code Online (Sandbox Code Playgroud)
我究竟做错了什么?