暗黙の型変換とは、目的に合わせた型を明示的に指定しなくても、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)を含んだ数定数を指定可能
暗黙の型変換は、データの比較および格納などにおいて利用可能です。
目的によって変換規則が異なりますので、目的ごとに説明します。