Base Types

CHAR | CHARACTERUTF-8 character string(s) with optional length upperbound limit.
CHAR [ '(' length ')' ]CHAR or CHARACTER without the "( length )" specification are treated as CHAR(1).
CHARACTER '(' length ')'Note: currently no spaces are padded at the end
VARCHAR [ '(' length ')' ]UTF-8 character string with length upperbound limit.
CHARACTER VARYING ['(' length ')']
CLOB [ '(' length ')' ]UTF-8 character string with length upperbound limit
TEXT [ '(' length ')']
STRING [ '(' length ')' ]
CHARACTER LARGE OBJECTUTF-8 character string with unbounded length
BLOB [ '(' length ')' ]bytes string with length upperbound limit
BINARY LARGE OBJECT ['(' length ')']
BOOLlogic values: true or false
BOOLEANlogic values: true or false
TINYINT8 bit signed integer between -127 and 127
SMALLINT16 bit signed integer between -32767 and 32767
INT32 bit signed integer between -2147483647 and 2147483647
INTEGER32 bit signed integer between -2147483647 and 2147483647
MEDIUMINT32 bit signed integer between -2147483647 and 2147483647
BIGINT64 bit signed integer between -9223372036854775807 and 9223372036854775807
HUGEINT128 bit signed integer between -2127 +1 and +2127 -1 (±170141183460469231731687303715884105727)
Note: HUGEINT is only available on platforms with a C-compiler that supports the __int128 or __int128_t data type (e.g., recent gcc, clang, & icc on Linux or MacOS X) and from Jul2015 release onwards
DECIMAL [ '(' Prec ',' Scale ')' ]Exact decimal number with precision Prec and scale Scale. Prec must be between 1 and 18 (or 38 when HUGEINT is also supported). Scale must be between 0 and Prec. Default, exact decimal number with precision 18 and scale 3
DEC [ '(' Prec ',' Scale ')' ]
NUMERIC [ '(' Prec ',' Scale ')' ]
REAL32 bit floating point approximate number
DOUBLE64 bit floating point approximate number
DOUBLE PRECISION64 bit floating point approximate number
FLOAT64 bit floating point approximate number
FLOAT '(' Prec ')'floating point approximate number with binary precision Prec. Prec must be between 1 and 53. FLOAT(24) is same as REAL, FLOAT(53) is same as DOUBLE

All scalar types include a NULL value, which is internally represented as a valid domain value. For numerical types, this is the smallest value in the type's domain (i.e., the one omitted in the ranges given above). Arithmetic expressions that overflow may lead to returning the NULL instead.

The integer types align with the storage of 1, 2, 4, 8 and 16 bytes.

The numeric and decimal 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.