我刚收到一个(MSSQL)数据库,很遗憾,该数据库中的数据已损坏。在某些数据集中,德国特殊字符(ä/ü/ö)被替换为 符号(Unicode:\ uFFFD)。
这不是排序规则或使用各种编码或任何东西(我已经检查过)的问题,而是提供原始数据的人的错,因为我很确定这些符号已“硬编码”为数据含义他们总是在那儿,可能是由于数据提供者的迁移失败(或类似的失败)而存在的。
由于没有这些错误,我无法获得正确的转储,因此我目前正在寻找仅选择受影响的数据集的可能性。我已经尝试了一个WHERE LIKE'%\ uFFFD%'语句(希望数据库在内部将这些符号解码为unicode代码),但是没有用。daccess-ods.un.org daccess-ods.un.org [...] WHERE LIKE'% %'部分起作用,因为它显示了所有受影响的列,但也显示了所有包含普通?的数据集。字符(由于输出太大,使得该方法对我不可用)。
有谁知道是否有可能只选择包含的数据集?
最好的问候,daZza
结果将取决于您的排序规则设置。我能够将它与几个不同的对象一起使用。我认为最通用的是:
SELECT *
FROM (VALUES (N'A�A'), (N'A?A'), (N'AAA'), (N'�A'), (N'A�'), (N'�')) t (c)
WHERE CHARINDEX(N'�' COLLATE Latin1_General_BIN, C) > 0;
或者
SELECT *
FROM (VALUES (N'A�A'), (N'A?A'), (N'AAA'), (N'�A'), (N'A�'), (N'�')) t (c)
WHERE C LIKE N'%�%' COLLATE Latin1_General_BIN;
使用LIKE时,它似乎只能与使用二进制排序的排序规则一起使用(尽管我尚未尝试所有排序规则!)。您可以使用以下方法获得这些:
SELECT name, description
FROM fn_helpcollations()
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句