2011-04-02 40 views
0

我从给出的备份中将数据导入到表中。现在我意识到这个备份是用另一个排序规则从一个数据库中进行的,因此我有无效字符,如├í而不是á用不同的编码替换字符

我该如何替换这些字符?

我想这一点,但不工作:

UPDATE Table1 
SET Field1 = REPLACE(Field1, '├í', 'á') 

另外请注意,我没有看到:├í,但我看到空方先于í

+0

您可以使用正确的排序规则从备份重新创建表吗?或者你是否已经添加了新的数据?如果是这样,你可能不得不从备份中重新创建表格,然后在恢复之后偿还所有的查询(不知道该怎么做 - 询问sysAdmin)。 – 2011-04-02 05:07:51

回答

1

你在哪里“看不到├”,但[你]看到í前面有一个空方块“?

Table1.Field1的数据类型是什么?什么是需要改变的Field1的一些行的二进制内容?什么是field的整理,你可以找到

SELECT SQL_VARIANT_PROPERTY(Field1,'Collation') FROM Table1; 

这可能是因为改变你的UPDATE语句以Unicode指定其内容很简单:

UPDATE Table1 SET 
    Field1 = REPLACE(Field1, N'├í', N'á') 

或者,它可能不是。如果没有,如果你发布了你在SELECT CAST(Field1 AS VARBINARY(40))时得到的内容,或者任何长度都给出了完整的Field1内容,这将有所帮助。您可能需要在REPLACE表达式中应用排序规则。

+0

我已经从MySQL表中拉出数据,这些数据加载不正确。我询问了原始脚本并将其转换为T-SQL,并且它像一个魅力一样工作。谢谢你:) – PedroC88 2011-04-08 04:59:01

相关问题