sql >> データベース >  >> RDS >> Mysql

すべての行の照合をlatin1_swedish_ciからutf8_unicode_ciに変更するにはどうすればよいですか?

    列がデフォルトのテーブル文字セットを使用している場合、変換するのはテーブルごとに1つのクエリだけです:

    ALTER TABLE t CONVERT TO CHARACTER SET utf8 COLLATE utf8_unicode_ci;
    

    文字セットが各列に個別に設定されている場合、データベース内のすべてのテーブルのすべての列でMySqlに直接設定する方法はありませんが、選択した言語で小さなプログラムを作成できます。

    プログラムは、 INFORMATION_SCHEMA.COLUMNS 表を見て、 CHARACTER_SET_NAMEを見てください 列:

    SELECT * FROM `INFORMATION_SCHEMA.COLUMNS`
    WHERE TABLE_SCHEMA = 'dbname' AND CHARACTER_SET_NAME = 'latin1'
    

    結果行ごとに、 ALTER TABLEを合成して実行するのは簡単です。 文字セットと照合を適切に変更するその場でクエリを実行します:

    ALTER TABLE t MODIFY col TEXT CHARACTER SET utf8 COLLATE utf8_unicode_ci;
    

    上記のクエリでは、 t col およびTEXT TABLE_NAMEの値になります 、 COLUMN_NAME およびDATA_TYPE INFORMATION_SCHEMA.COLUMNSの列 結果セット。



    1. ログなしでSQLのテーブルの大きなデータを削除するにはどうすればよいですか?

    2. WHERE句のMySQLユーザー定義変数

    3. テーブルのID列の明示的な値は、列リストが使用され、IDENTITY_INSERTがONSQLServerの場合にのみ指定できます。

    4. MariaDBでのDATE_ADD()のしくみ