私はMySQLにテーブルに人の名前が入っていて、アクセントのある人がいる人もいます。このデータベースが使用した元の文字セット/照合が何であっても、アクセントや文字のある文字は処理できませんでした。 'é'などの文字は 'é'に変わり、このデータベースに接続するフロントエンドアプリケーションで 'ü'などの文字が 'ü'に変わりました。データベースはその後、UTF8のエンコーディングと照合を使用するように変更されました(また、必要なフロントエンドアプリケーションのほとんどが変更されています)。アクセント付きのほとんどの名前が正しくレンダリングされるようになりました。MySQL - 不正な文字を見つけて修正する
問題があり、今リテラル「A©」を持っているいくつかのフィールドがあります(いくつかの奇妙な二重エンコードが手動のものをコピー&ペーストによって引き起こされる?私は知らないが、私はありませんでした!) 。私は今これらのすべてを見つけ、これらのフィールドを修正して、正しいアクセント付き文字を使用する必要があります。
select count(*), bad_char
from some_table
inner join (
select '€' as bad_char union
select '‚' as bad_char union
select 'Æ’' as bad_char union
select '„' as bad_char union
select '…' as bad_char union
...
-- snip a whole bunch
...
select 'þ' as bad_char union
select 'ÿ' as bad_char) bad_chars
where some_table.some_text_field like CONCAT('%',bad_chars.bad_char,'%')
group by bad_char
order by count(*);
そして、私はこのような結果を得る:それらを見つけるために、私は(私がhereを発見したテーブルに基づいて)、クエリを書い
count(*), bad_char ------------------ '1', '¯' '1', 'Ñ' '1', 'Ö' '1', 'Ž' '1', 'Ç' '1', '¬' ...snip... '1797', 'ß' '4450', 'Ê'
をしかし、私は、これはかなりの仕事をしない気持ちを持っていますそれが私が思うように。私が探している「bad_char」の組み合わせの一つは、「AS」ですが、私はこのようなクエリを実行すると:
select some_text_field from some_table where some_text_field like '%Ê%';
を私は、同じ文字が、アクセントなしである「として」多くの結果を得ます。しかし、 'Â'などの他のケースでは、クエリは正常に動作しているようです。
にこのクエリを取得するにはどうすればいいですか?は 'と'を 'Ã'と同じように扱いますか?
データベースの大きさによっては、コンテンツをダンプするだけで、結果のSQLファイルの文字をテキストエディタで置き換えて、再度アップロードしてください... – CBroe
@CBroe:おそらくあまりにも大きいt。そして、私は実際には、ファイルに抽出して変換し、再読み込みするスクリプトをたくさん作成するのではなく、このようなことをデータベースに保存します。 – FrustratedWithFormsDesigner
phpmyadminとか、もっと小さくしたいのであれば、これはもうちょっとしたスクリプトファイルです。 – CBroe