问题描述
最初,我们使用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分开它们。
任何线索都会有所帮助。谢谢!
解决方法
您不仅可以select coalesce( convert(...),name )
吗?