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