我们有两个数据库,一个是旧的,有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工作!
感谢。
答案 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)))