Convert numbers and strings
Before IBM® Informix® ESQL/C can convert a value from one data type to another, it must determine whether the conversion is meaningful.
The following table shows possible conversions between numeric data types and character data types. In this figure, N represents a value with a numeric data type (such as DECIMAL, FLOAT, or SMALLINT) and C represents a value with a character data type (such as CHAR or VARCHAR).
Conversion | Problem | Results |
---|---|---|
C C | Does not fit | Informix ESQL/C truncates the string, sets a warning (sqlca.sqlwarn.sqlwarn1 to W and SQLSTATE to 01004), and sets any indicator variable to the size of the original string. |
N C | None | Informix ESQL/C creates a string for the numeric value; it uses an exponential format for large or small numbers. |
N C | Does not fit | Informix
ESQL/C fills
the string with asterisks, sets a warning (sqlca.sqlwarn.sqlwarn1 to W and
SQLSTATE to 01004), and sets any indicator variable
to a positive integer. When the fractional part of a number does not fit in a character variable, Informix ESQL/C rounds the number. Asterisks are displayed only when the integer part does not fit. |
C N | None | Informix ESQL/C determines the numeric data type based on the format of the character value; if the character contains a decimal point, Informix ESQL/C converts the value to a DECIMAL value. |
C N | Not a number | The number is undefined; Informix ESQL/C sets sqlca.sqlcode and SQLSTATE to indicate a runtime error. |
C N | Overflow | The number is undefined; Informix ESQL/C sets sqlca.sqlcode and SQLSTATE to indicate a runtime error. |
N N | Does not fit | Informix
ESQL/C attempts
to convert the number to the new data type. For information about possible errors, see the HCL Informix Guide to SQL: Reference. |
N N | Overflow | The number is undefined; Informix ESQL/C sets sqlca.sqlcode and SQLSTATE to indicate a runtime error. |
In Table 1, the phrase Does not fit means that the size of the data from the source variable or column exceeds the size of the target column or variable.