我从给出的备份中将数据导入到表中。现在我意识到这个备份是用另一个排序规则从一个数据库中进行的,因此我有无效字符,如├í
而不是á
。用不同的编码替换字符
我该如何替换这些字符?
我想这一点,但不工作:
UPDATE Table1
SET Field1 = REPLACE(Field1, '├í', 'á')
另外请注意,我没有看到:├í
,但我看到空方先于í
。
我从给出的备份中将数据导入到表中。现在我意识到这个备份是用另一个排序规则从一个数据库中进行的,因此我有无效字符,如├í
而不是á
。用不同的编码替换字符
我该如何替换这些字符?
我想这一点,但不工作:
UPDATE Table1
SET Field1 = REPLACE(Field1, '├í', 'á')
另外请注意,我没有看到:├í
,但我看到空方先于í
。
你在哪里“看不到├”,但[你]看到í前面有一个空方块“?
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表达式中应用排序规则。
我已经从MySQL表中拉出数据,这些数据加载不正确。我询问了原始脚本并将其转换为T-SQL,并且它像一个魅力一样工作。谢谢你:) – PedroC88 2011-04-08 04:59:01
您可以使用正确的排序规则从备份重新创建表吗?或者你是否已经添加了新的数据?如果是这样,你可能不得不从备份中重新创建表格,然后在恢复之后偿还所有的查询(不知道该怎么做 - 询问sysAdmin)。 – 2011-04-02 05:07:51