|CHAR[ACTER] '(' length ')'||character string with length upperbound|
|VARCHAR '(' length ')' | CHARACTER VARYING '(' length ')'||string with length upperbound limit|
|TEXT | STRING | CLOB | CHARACTER LARGE OBJECT||string with unbounded length|
|BLOB | BINARY LARGE OBJECT|
|DECIMAL '(' P ',' S ')' | NUMERIC '(' P ',' S ')'||with precision P and scale S|
|TINYINT||8 bit signed integer|
|SMALLINT||16 bit signed integer|
|INT||32 bit signed integer|
|BIGINT||64 bit signed integer|
|REAL||32 bit floating point|
|FLOAT | DOUBLE [PRECISION]||64 bit floating point|
|BOOLEAN||true or false|
All scalar types include a NULL value, which is internally represented as a valid domain value. Arithmetic expressions that overflow may lead to returning the NULL instead.
The integer types align with the storage of 1, 2, 4, and 8 bytes.
The numeric types are represented as fixed length integers, whose decimal point is produced during result rendering.
The types REAL, FLOAT and DOUBLE map to the underlying implementation system. No special attention is given to the value NaN.