Numeric data types
Informix®
Informix supports several data types to store numbers:
Informix data type | Description |
---|---|
SMALLINT |
16 bit signed integer |
INTEGER |
32 bit signed integer |
BIGINT |
64 bit signed integer |
INT8 |
64 bit signed integer (replaced by
BIGINT ) |
DECIMAL |
Equivalent to DECIMAL(16) |
DECIMAL(p) |
Floating-point decimal number (max precision is 32) |
DECIMAL(p,s) |
Fixed-point decimal number (max precision is 32) |
MONEY |
Equivalent to DECIMAL(16,2) |
MONEY(p) |
Equivalent to DECIMAL(p,2) (max precision is
32) |
MONEY(p,s) |
Equivalent to DECIMAL(p,s) (max precision is
32) |
REAL / SMALLFLOAT |
32-bit floating point decimal (C float) |
DOUBLE PRECISION / FLOAT[(n)] |
64-bit floating point decimal (C double) |
SAP HANA®
SAP HANA supports the following numeric data types:
SAP HANA data type | Description |
---|---|
TINYINT |
8 bit unsigned integer (0 to 255) |
SMALLINT |
16 bit signed integer (-32,768 to 32,767) |
INTEGER |
32 bit signed integer (-2,147,483,648 to 2,147,483,647) |
BIGINT |
64 bit signed integer (-9,223,372,036,854,775,808 to 9,223,372,036,854,775,807) |
DECIMAL(p,s) |
Fixed point decimal (max p is 38) |
DECIMAL(p) |
Floating point decimal (approximative) |
DECIMAL |
Floating point decimal (approximative) |
SMALLDECIMAL |
Floating point decimal (approximative) |
REAL |
32-bit floating point decimal (C float) |
FLOAT[(n)] (DOUBLE) |
64-bit floating point decimal (C double) |
Solution
Informix data type | SAP HANA equivalent |
---|---|
SMALLINT |
SMALLINT |
INTEGER |
INTEGER |
INT8 / BIGINT |
BIGINT |
DECIMAL(p,s) |
DECIMAL(p,s) |
DECIMAL(p<=19) |
DECIMAL(p*2,p) |
DECIMAL(p>19) |
N/A: Max p is 38 for SAP HANA |
DECIMAL |
DECIMAL(32,16) |
MONEY |
DECIMAL(16,2) |
MONEY(p) |
DECIMAL(p,2) |
MONEY(p,s) |
DECIMAL(p,s) |
SMALLFLOAT |
REAL |
FLOAT[(n)] |
DOUBLE |
SQL scripts to create databases must be converted manually. Tables created from BDL programs do
not have to be converted; the database interface detects the MONEY
data type and
uses the DECIMAL
type for SAP HANA.
Important: There is no SAP HANA equivalent
for the Informix
DECIMAL(p)
floating
point decimal (i.e. without a scale). If your application is using such data types, you must review
the database schema in order to use SAP HANA compatible
types. To workaround the SAP HANA limitation, the SAP HANA database driver converts DECIMAL(p)
types to a DECIMAL( 2*p, p )
, to store all possible numbers an Informix DECIMAL(p)
can store. However, the original Informix precision cannot exceed 19, because SAP HANA supports a maximum DECIMAL
precision of
38 (2*19)
. If the original precision is bigger than 19, a CREATE
TABLE
statement executed from a Genero program will fail with an SQL error.The numeric types translation can be
controlled with the following FGLPROFILE
entries:
dbi.database.dsname.ifxemul.datatype.smallint = { true | false }
dbi.database.dsname.ifxemul.datatype.integer = { true | false }
dbi.database.dsname.ifxemul.datatype.bigint = { true | false }
dbi.database.dsname.ifxemul.datatype.int8 = { true | false }
dbi.database.dsname.ifxemul.datatype.decimal = { true | false }
dbi.database.dsname.ifxemul.datatype.money = { true | false }
dbi.database.dsname.ifxemul.datatype.float = { true | false }
dbi.database.dsname.ifxemul.datatype.smallfloat = { true | false }
For more details see IBM Informix emulation parameters in FGLPROFILE.