SQL Server无法修剪COLLATION类型SQL_Latin1_General_CP1_CI_AS的数据

时间:2013-09-14 11:18:10

标签: sql-server collation trim

我们有两个数据库,一个是旧的,有COLLATION - SQL_Latin1_General_CP1_CI_AS,新的有COLLATION - Latin1_General_CI_AI(可能是默认的)。

两个数据库中都有一个简单的Table1(ID(int),代码(nvarchar(50)))。我想要做的是比较两个表的数据,找到丢失或额外的记录。

Sample data in old table has code like : 'Code1      '
Sample data in new table has code like : 'Code1  '

我需要做的是比较两个数据(来自'名称'列)。我无法修剪旧表中的数据 -

示例:

SELECT LTRIM(RTRIM([Name])) from [OLDDB].dbo.Table1
returns 'Code1     '       -- NOT as expected (probably due to mis-match in charset

SELECT LTRIM(RTRIM([Name])) from [NEWDB].dbo.Table1
'Code1'                    -- as expected

我希望这是有道理的。此外,即使我在列级更改COLLATION仍然无法使ltrim / rtrim工作!

感谢。

2 个答案:

答案 0 :(得分:0)

如果CHAR(160)出现问题,那么您不必更改排序规则。只需用适当的空格替换那些CHAR(160),然后RTRIM就可以了。

SELECT LTRIM(RTRIM(REPLACE([Name], CHAR(160), ' '))) from [OLDDB].dbo.Table1

答案 1 :(得分:0)

请尝试以下更新,希望这可以解决问题。

更新[OLDDB] .dbo.Table1设置名称RTRIM(替换(NAME,char(160),char(32)))