[英](T)SQL Query to filter all datasets, which contain �
我刚收到一个(MSSQL)数据库,很遗憾,该数据库中的数据已损坏。 在某些数据集中,德国特殊字符(ä/ü/ö)被替换为 符号(Unicode:\\ uFFFD)。
这不是排序规则或使用各种编码或任何东西(我已经检查过)的问题,而是提供原始数据的人的错,因为我很确定这些符号已“硬编码”为数据含义他们总是在那儿,可能是由于数据提供者的迁移失败(或类似的失败)而存在的。
由于没有这些错误,我无法进行正确的转储,因此我目前正在寻找仅选择受影响的数据集的可能性。 我已经尝试了一个WHERE LIKE'%\\ uFFFD%'语句(希望数据库在内部将这些符号解码为unicode代码),但是没有用。 [...]像'% %'的部分工作,因为它显示了所有受影响的列,但也显示了所有包含正常?的数据集。 字符(由于输出太大,使得该方法对我不可用)。
有谁知道是否有可能只选择包含的数据集?
最好的问候,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()
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.