0

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

两个数据库中都有一个简单的 Table1 (ID (int), code(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 工作!

谢谢。

4

2 回答 2

0

如果 CHAR(160) 是问题,那么您不必更改排序规则。只需将那些 CHAR(160) 替换为适当的空格,然后 RTRIM 即可工作。

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

于 2013-09-14T19:37:14.513 回答
0

试试下面的更新,希望这能解决问题。

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

于 2013-09-14T19:50:17.623 回答