MySQLのCHAR()関数でUSINGキーワードを使い、指定した文字セットの文字列を生成する方法
MySQLのCHAR()関数とUSINGキーワード
MySQLでは、CHAR()関数は引数に渡された整数値を文字コードとして解釈し、対応する文字を含む文字列を返します。通常、CHAR()関数はデフォルトでバイナリ文字列を生成しますが、USINGキーワードを組み合わせることで、任意の文字セット(utf8やlatin1など)を持つ文字列を生成できます。
USINGキーワードによる文字セットの指定方法
書式は「CHAR(数値 USING 文字セット名)」となります。実際に、CHARSET()関数を使って返される文字列の文字セットを確認してみましょう。
utf8を指定した場合
mysql> Select CHARSET(CHAR(85 USING utf8)); +------------------------------+ | CHARSET(CHAR(85 USING utf8)) | +------------------------------+ | utf8 | +------------------------------+ 1 row in set (0.00 sec)
この結果セットを見ると、USINGキーワードの後にutf8を指定したため、返される文字列の文字セットがutf8になっていることがわかります。
latin1を指定した場合
mysql> Select CHARSET(CHAR(85 USING latin1)); +--------------------------------+ | CHARSET(CHAR(85 USING latin1)) | +--------------------------------+ | latin1 | +--------------------------------+ 1 row in set (0.00 sec)
同様に、USINGキーワードの後にlatin1を指定すると、返される文字列の文字セットはlatin1になります。
まとめ
CHAR()関数でデフォルトのバイナリ文字列以外の文字列が必要な場合は、USINGキーワードの後に希望の文字セット名を記述するだけで簡単に指定できます。マルチバイト文字を扱う場合や、アプリケーション側で特定のエンコーディングを前提としている場合には、この方法を活用することで文字化けなどのトラブルを防ぐことができます。
-
MySQLのデフォルトのサーバー文字セットと照合順序を確認する方法
MySQLでは、システム変数 character_set_server を参照することで、サーバーのデフォルト文字セットを簡単に確認できます。また、collation_server システム変数を使えば、デフォルトの照合順序(コレーション)も調べることが可能です。デフォルトのサーバー文字セットを確認する以下の構文を使用して、MySQLサーバーのデフォルト文字セットを確認します。SHOW VARIABLES LIKE character_set_server;デフォルトの照合順序を確認する同様に、次の構文でデフォルトの照合順序を確認できます。SHOW VARIABLES LIKE collati
-
MySQLでデータベースのデフォルト文字セットを設定する方法
MySQLでデータベースを作成する際、デフォルトの文字セット(キャラクタセット)を明示的に指定しておくと、日本語などのマルチバイト文字を扱う際の文字化けを防ぐことができます。ここでは、CREATE DATABASE文を使ってデフォルト文字セットを設定する方法を解説します。 デフォルト文字セットを設定する基本構文 データベース作成時にデフォルトの文字セットと照合順序(コレーション)を指定するには、以下の構文を使用します。 CREATE DATABASE IF NOT EXISTS データベース名 DEFAULT CHARACTER SET utf8 DEFAULT COLLATE utf8_