CAST関数/CONVERT関数(指定した値を別のデータ型または別の文字セットに変換する)

MySQL で CAST 関数または CONVERT 関数を使用すると引数に指定した値を別のデータ型に変換することができます。また別の文字セットに変換することもできます。ここでは MySQL における CAST 関数および CONVERT 関数の使い方について解説します。

(Last modified: )

CAST関数およびCONVERT関数の使い方

CAST 関数は引数に指定した値を別のデータ型に変換するために使用します。書式は次の通りです。

CAST(expr AS type)

同じように CONVERT 関数は引数に指定した値を別のデータ型に変換するために使用します。書式は次の通りです。

CONVERT(expr,type)

CAST 関数及び CONVERT 関数で type に指定できるデータ型は次のいずれかである必要があります。

BINARY[(N)]
CHAR[(N)] [charset_info]
DATE
DATETIME
DECIMAL[(M[,D])]
JSON
NCHAR[(N)]
SIGNED [INTEGER]
TIME
UNSIGNED [INTEGER]

また CONVERT 関数は引数に指定した値の文字セットを別の文字セットに変換する用途でも利用できます。書式は次の通りです。

CONVERT(expr USING transcoding_name)

-- --

それでは実際に試してみます。次のように実行してください。

select cast(now() as signed);

MySQL/CAST 関数の使い方(1)

同じことを今度は CONVERT 関数を使って行ってみます。

select convert(now(), signed);

MySQL/CONVERT 関数の使い方(1)

-- --

次に CONVERT 関数を使って文字列の文字セットを変更してみます。最初に文字セットを指定して文字列をユーザー変数 @s1 に設定します。 CHARSET 関数を使って文字セットを確認すると latin1 となっています。

set @s1 = _latin1 'abc';
select charset(@s1);

MySQL/CONVERT 関数の使い方(2)

次に CONVERT 関数を使いユーザー変数 @s1 に入っている文字列の文字セットを UTF-8 に変更し、ユーザー変数 @s2 に設定します。

set @s2 = convert(@s1 using utf8);

MySQL/CONVERT 関数の使い方(3)

では CHARSET 関数を使って @s2 の文字セットを確認すると utf8 となっています。

select charset(@s2);

MySQL/CONVERT 関数の使い方(4)

このように CONVERT 関数を使って文字セットを変更することができました。

※ 先ほどのサンプルで使用した CHARSET 関数に関して詳しくは「CHARSET関数 / COLLATION関数 (文字列の文字セットと照合順序を取得する)」を参照されてください。

-- --

cast 関数および convert 関数の使い方について解説しました。

( Written by Tatsuo Ikura )

Profile
profile_img

著者 / TATSUO IKURA

プログラミングや開発環境構築の解説サイトを運営しています。