OpenText Analytics Database 旧Vertica

技術情報サイト

Analytics Database

CAST演算子を使ったデータ型の明示的な変換

公開日:
更新日:
アーキテクチャ
基本操作
#データ型

はじめに

本記事では、 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/

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 本記事を公開