CONVERT()
を使用すると、異なるキャラクタセット間でデータを変換することができます。構文は以下のとおりです。
CONVERT(exprUSINGtranscoding_name)
MySQL では、トランスコーディング名は対応するキャラクタセット名と同じです。
例:
SELECT CONVERT(_latin1'Müller' USING utf8);
INSERT INTO utf8table (utf8column)
SELECT CONVERT(latin1field USING utf8) FROM latin1table;
CONVERT(... USING ...)
は、標準SQLの仕様に基づき実装されています。
CAST()
を使用し、文字列を別のキャラクタセットに変換することもできます。構文は以下のとおりです。
CAST(character_stringAScharacter_data_typeCHARACTER SETcharset_name)
例:
SELECT CAST(_latin1'test' AS CHAR CHARACTER SET utf8);
CAST()woCHARACTER
SETの指定なしで使用した場合、キャラクタセットと照合順序はcharacter_set_connectionとcollation_connectionのシステム変数で定義されます。CAST()をCHARACTER
SET
Xの指定ありで使用した場合、キャラクタセットはX、照合順序はXのデフォルト照合順序になります。
COLLATE節をCAST()の内部で使用することはできませんが外部では使用することができます。したがってCAST(...
COLLATE ...)無効ですが、CAST(...)
COLLATE ...は有効です。
例:
SELECT CAST(_latin1'test' AS CHAR CHARACTER SET utf8) COLLATE utf8_bin;
