はじめに
本記事では、 CAST演算子でデータ型を変換する方法について解説します。
データ型を変換する方法
いずれの構文であってもデータ型を変換することができます。
構文
SELECT CAST ( 式 AS データ型 )
SELECT 式::データ型
SELECT 変換するデータ型 '文字列'パラメータ
パラメータ | 説明 |
|---|---|
式 | 任意の式や列を指定します。 |
データ型 | 変換可能なデータ型を指定します。 |
変換可能なデータ型については、以下の記事をご覧ください。
データ型の変換と変更
https://www.ashisuto.co.jp/cm/analytics-database/changing_data_type.html
データ型を変換し別の表へ挿入している例
以下は、CAST演算子で文字データ(varchar型)を数値データ(number型)に変換している例です。
## moji表はvarchar型のデータを格納しています。
dbadmin=> \d moji
List of Fields by Tables
-[ RECORD 1 ]------------
Schema | public
Table | moji
Column | char1
Type | varchar(10)★
Size | 10
Default |
Not Null | f
Primary Key | f
Foreign Key |
dbadmin=> select char1 from moji;
char1
-------
11111
(1 row)
## suji表はnumber型のデータを格納できます。
dbadmin=> \d suji
List of Fields by Tables
-[ RECORD 1 ]--------------
Schema | public
Table | suji
Column | no1
Type | numeric(10,0)★
Size | 8
Default |
Not Null | f
Primary Key | f
Foreign Key |
## moji表のデータはvarchar型であるため、suji表のnumber型の列に
## データを挿入する場合、ERROR 2631 が発生します。
dbadmin=> insert into suji select char1 from moji;
ERROR 2631: Column "no1" is of type numeric but expression is of type varchar
HINT: You will need to rewrite or cast the expression
## CAST演算子で、moji表のデータ型を変換し、suji表にデータを挿入します。
dbadmin=> insert into suji select CAST(char1 as number) from moji;
OUTPUT
--------
1
(1 row)
dbadmin=> select no1 from suji;
no1
-------
11111
(1 row)参考情報
「データ型の変換に失敗した場合の動作」および「デフォルト動作の変更方法」
https://www.ashisuto.co.jp/cm/analytics-database/fail_coercion_operators.html
Data type coercion operators (CAST)
https://docs.vertica.com/12.0.x/en/sql-reference/language-elements/operators/data-type-coercion-operators-cast/
検証バージョンについて
この記事の内容はVertica 12.0で確認しています。
更新履歴
2023/07/06 タイトルの表現を変更
2023/06/27 本記事を公開