【发布时间】:2014-02-14 00:41:42
【问题描述】:
我刚刚收到一个 (MSSQL) 数据库,不幸的是其中的数据已损坏。 在某些数据集中,德语特殊字符 (ä/ü/ö) 被替换为 � 符号 (Unicode: \uFFFD)。
这不是整理或使用各种编码或任何东西(我已经检查过)的问题,而是提供原始数据的人的错,因为我很确定这些符号被“硬编码”到数据意味着它们“总是”在那里,并且可能是由于数据提供者的迁移失败(或类似的事情)而存在的。
由于我无法在没有这些错误的情况下进行正确的转储,因此我目前正在寻找仅选择受影响的数据集的可能性。我已经尝试过 [...] WHERE LIKE '%\uFFFD%' 语句(希望数据库在内部将这些符号解码为 unicode 代码),但无济于事。 [...] WHERE LIKE '%�%' 部分工作,因为它显示所有受影响的列,但也显示所有包含正常的数据集?字符(这使我无法使用此方法,因为输出太大了)。
有谁知道是否有可能专门只选择包含 � 的数据集?
最好的问候, 咻咻咻
【问题讨论】:
-
如果您在查询中添加“N”会怎样? WHERE LIKE N'%�%' 这会将文本显式转换为 unicode。 (作为快速修复:找到一个根本不使用的字符,将所有正常的 ? 字符替换为该字符,找到特殊情况,处理它们,然后完成后,将特殊字符改回 ?)
-
与没有 N 的 2155 相比,添加 N 得到 43260 个结果 :) 不过我会考虑那个 Quickfix(我怀疑它会很快:P)
-
我认为@GarethD 在下面显示 unicode 不能很好地与 like 语句配合使用。 Charindex 前景广阔。
标签: sql sql-server tsql unicode encoding