暗黙の型変換とは、目的に合わせた型を明示的に指定しなくても、Symfoware Serverにより自動的に行われる型変換です。
型変換可能な組合せは、変換元の値式が定数と定数でない場合で異なります。
定数でない場合は同じデータ型種類の範囲のみで型変換が可能となります。
定数の場合、文字列定数は変換先のデータ型に合わせた型変換が可能です。数定数は、内部的に特定の数値型に変換されます。そして内部的に変換された数定数が変換先のデータ型に合わせて数値型の範囲で型変換が可能となります。ビット文字列定数はビット列データ型のみ指定可能です。以下に定数の型変換の範囲を記載します。
変換先 | 変換元 | |||
---|---|---|---|---|
文字列定数(注1) | 数定数(注2) | ビット文字列定数 | ||
数値型 | SMALLINT | ○ | × | × |
INTEGER | ○ | ○(注3) | × | |
BIGINT | ○ | ○(注4) | × | |
DECIMAL | ○ | ○(注5) | × | |
NUMERIC | ○ | ○(注5) | × | |
REAL | ○ | × | × | |
DOUBLE PRECISION | ○ | × | × | |
SMALLSERIAL | ○ | × | × | |
SERIAL | ○ | ○(注3) | × | |
BIGSERIAL | ○ | ○(注4) | × | |
通貨型 | MONEY | ○ | × | × |
文字列型 | CHAR | ○ | × | × |
VARCHAR | ○ | × | × | |
NCHAR | ○ | × | × | |
NCHAR VARYING | ○ | × | × | |
TEXT | ○ | × | × | |
バイナリ列型 | BYTEA | ○ | × | × |
日付/時刻型 | TIMESTAMP WITHOUT TIME ZONE | ○ | × | × |
TIMESTAMP WITH TIME ZONE | ○ | × | × | |
DATE | ○ | × | × | |
TIME WITHOUT TIME ZONE | ○ | × | × | |
TIME WITH TIME ZONE | ○ | × | × | |
INTERVAL | ○ | × | × | |
論理値型 | BOOLEAN | ○ | × | × |
幾何データ型 | POINT | ○ | × | × |
LSEG | ○ | × | × | |
BOX | ○ | × | × | |
PATH | ○ | × | × | |
POLYGON | ○ | × | × | |
CIRCLE | ○ | × | × | |
ネットワークアドレス型 | CIDR | ○ | × | × |
INET | ○ | × | × | |
MACADDR | ○ | × | × | |
ビット列データ型 | BIT | ○ | × | ○ |
BIT VARYING | ○ | × | ○ | |
テキスト検索に関する型 | TSVECTOR | ○ | × | × |
TSQUERY | ○ | × | × | |
UUID型 | UUID | ○ | × | × |
XML型 | XML | ○ | × | × |
JSON型 | JSON | ○ | × | × |
○:型変換可能
×:型変換不可能
注1) 変換先のデータ型へ型変換可能な形の文字列のみ指定可能(たとえば、変換先が数値型ならば’1’など)
注2) 数定数の表記については、最初に変換される特定の数値型を○で表しています
注3) INTEGER型で表現できる整数を指定可能
注4) INTEGER型で表現できず、BIGINT型で表現できる整数を指定可能
注5) INTEGER型およびBIGINT型で表現できず、NUMERIC型で表現できる整数、もしくは小数点または指数記号(e)を含んだ数定数を指定可能
暗黙の型変換は、データの比較および格納などにおいて利用可能です。
目的によって変換規則が異なりますので、目的ごとに説明します。