はじめに
本記事では、 CAST演算子でデータ型を変換する方法について解説します。データ型を変換する方法
いずれの構文であってもデータ型を変換することができます。構文
1 2 3 |
SELECT CAST ( 式 AS データ型 ) SELECT 式::データ型 SELECT 変換するデータ型 '文字列' |
パラメータ
パラメータ | 説明 |
---|---|
式 | 任意の式や列を指定します。 |
データ型 | 変換可能なデータ型を指定します。 |
変換可能なデータ型については、以下の記事をご覧ください。
データ型の変換と変更
http://vertica-tech.ashisuto.co.jp/changing_data_type/
データ型を変換し別の表へ挿入している例
以下は、CAST演算子で文字データ(varchar型)を数値データ(number型)に変換している例です。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 |
## 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) |
参考情報
「データ型の変換に失敗した場合の動作」および「デフォルト動作の変更方法」http://vertica-tech.ashisuto.co.jp/fail_coercion_operators
Data type coercion operators (CAST)
https://docs.vertica.com/12.0.x/en/sql-reference/language-elements/operators/data-type-coercion-operators-cast/
Cast failures
https://docs.vertica.com/12.0.x/en/sql-reference/language-elements/operators/data-type-coercion-operators-cast/cast-failures/
検証バージョンについて
この記事の内容はVertica 12.0で確認しています。更新履歴
2023/07/06 タイトルの表現を変更2023/06/27 本記事を公開