混合内容的Latin-1到UTF-8转换

问题描述

最初,我们使用UTF-8编码运行了一个数据库,并且不得不迁移到错误地使用latin-1的其他服务器上。问题在于大多数名称都包含特殊的外来字符,并且在没有正确编码的情况下它们变得很奇怪:

例如:

NeziheŞükranAkkaş
LÜTFİÇOBAN
埃伦·卡拉格兹拉(ErenKaragözlüp)

我可以使用以下查询将其转换回UTF:
SELECT convert(cast(convert(name using latin1) as binary) using UTF8) AS name FROM users;

以上名称现在可以正确显示

NeziheŞükranAkkaş
LÜTFİÇOBAN
艾伦·卡拉格祖鲁(ErenKaragözlü)

但是,以前被编码为正确的UTF-8的所有数据现在都显示(NULL)

我的问题是如何只转换损坏的编码行,而使正确编码的行保持不变?现在,它是“或”。问题在于它们是按顺序混合的,所以我无法按ID分开它们。

任何线索都会有所帮助。谢谢!

enter image description here

解决方法

您不仅可以select coalesce( convert(...),name )吗?