MariaDBでは、CONVERT()
値を別のデータ型に変換する組み込み関数です。 1つのタイプの値を取り、指定されたタイプの値を返します。
関数を呼び出すときに引数として値と、変換する型を指定します。
CONVERT()
CAST()
に似ています 。
構文
CONVERT()
関数は、ODBC構文またはSQL92構文を使用して呼び出すことができます。
ODBC構文:
CONVERT(expr, type)
SQL92構文:
CONVERT(expr USING charset)
expr
変換する値、type
変換するデータ型です。
SQL92構文を使用して、charset
変換したい文字セットです。
例
簡単な例を次に示します。
SELECT CONVERT(123.45, INT);
結果:
+----------------------+ | CONVERT(123.45, INT) | +----------------------+ | 123 | +----------------------+
これにより、値が整数に変換され、小数点以下が削除されました。
別の例を次に示します。
SELECT CONVERT('2020-01-01', DATETIME);
結果:
+---------------------------------+ | CONVERT('2020-01-01', DATETIME) | +---------------------------------+ | 2020-01-01 00:00:00 | +---------------------------------+
この場合、文字列をDATETIME
に変換しました データ型。
変換の失敗
前の例では、有効なDATE
を指定しました 文字列(またはDATE
リテラル)。したがって、MariaDBは値をDATETIME
に変換することができました データ型。
ただし、無効なDATE
を指定するとどうなりますか。 文字列:
SELECT CONVERT('1 Jan, 2020', DATE);
結果:
+------------------------------+ | CONVERT('1 Jan, 2020', DATE) | +------------------------------+ | NULL | +------------------------------+
ここで、MariaDBはこの値を変換する方法を理解できず、NULL
を返しました。 。
この場合、STR_TO_DATE()
などの別の関数を使用できます。 このような変換を実行するには:
SELECT STR_TO_DATE('1 Jan, 2020', '%e %M, %Y');
結果:
+-----------------------------------------+ | STR_TO_DATE('1 Jan, 2020', '%e %M, %Y') | +-----------------------------------------+ | 2020-01-01 | +-----------------------------------------+
文字セットを指定する
SQL92構文を使用すると、変換する文字セットを指定できます。
例:
SELECT CONVERT('ไม้เมือง' USING tis620);
結果:
+--------------------------------------------------+ | CONVERT('ไม้เมือง' USING tis620) | +--------------------------------------------------+ | ไม้เมือง | +--------------------------------------------------+
文字セットを変更すると、照合もその文字セットのデフォルトの照合に変更されます。
上記の例は、文字セット/照合がどのように変更されたかを実際には示していません。
幸い、CHARSET()
などの関数を使用できます。 およびCOLLATION()
文字セットと照合がどのように変更されたかを確認するには:
SELECT
CHARSET('ไม้เมือง') AS a,
COLLATION('ไม้เมือง') AS b,
CHARSET(CONVERT('ไม้เมือง' USING tis620)) AS c,
COLLATION(CONVERT('ไม้เมือง' USING tis620)) AS d;
結果:
+------+-----------------+--------+----------------+ | a | b | c | d | +------+-----------------+--------+----------------+ | utf8 | utf8_general_ci | tis620 | tis620_thai_ci | +------+-----------------+--------+----------------+
1つ目は、接続に文字セットと照合を使用します。 2つ目は、CONVERT()
で明示的に指定した文字セットを使用します 、およびその文字セットのデフォルトの照合。
照合とそれに対応する文字セットの完全なリストについては、MariaDBで利用可能な照合のリストを参照してください。
ヌル引数
null
を変換しようとしています null
を返します :
SELECT CONVERT(null, DATETIME);
結果:
+-------------------------+ | CONVERT(null, DATETIME) | +-------------------------+ | NULL | +-------------------------+
ただし、null
を渡す 新しいデータ型を指定しないと、構文エラーが発生します:
SELECT CONVERT(null);
結果:
ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near ')' at line 1
引数がありません
CONVERT()
を呼び出す 引数を渡さないと、構文エラーが発生します:
SELECT CONVERT();
結果:
ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near ')' at line 1