CHAR and VARCHAR data types
Informix®
Informix supports the following character data types:
Informix data type | Description |
---|---|
CHAR(n) |
SBCS and MBCS character data (max is 32767 bytes) |
VARCHAR(n |
SBCS and MBCS character data (max is 255 bytes) |
NCHAR(n) |
Same as CHAR , with specific collation
order |
NVARCHAR(n |
Same as VARCHAR , with specific collation
order |
LVARCHAR(n) |
max size varies depending on the IDS version |
With Informix, both
CHAR/VARCHAR
and NCHAR/NVARCHAR
data types can be used to store
single-byte or multibyte encoded character strings. The only difference between
CHAR/VARCHAR
and NCHAR/NVARCHAR
is in how they use sorting:
N[VAR]CHAR
types use the collation order, while [VAR]CHAR
types
use the byte order.
The character set used to store strings in
CHAR/VARCHAR/NCHAR/NVARCHAR
columns is defined by the DB_LOCALE environment
variable.
Informix uses Byte Length Semantics (the size
N that you specify in [VAR]CHAR(N)
is expressed in bytes, not characters as in some
other databases)
Netezza®
Netezza supports following data types to store character data:
Netezza data type | Description |
---|---|
CHAR(n) |
Latin-9 character data, where n is specified in bytes (max is 64000 bytes) |
VARCHAR(n) |
Latin-9 character data, where n is specified in bytes (max is 64000 bytes) |
NCHAR(n) |
Unicode/UTF-8 character data, where n is specified in characters (max is 16000 characters) |
NVARCHAR(n) |
Unicode/UTF-8 character data, where n is specified in characters (max is 16000 characters) |
Netezza uses the Latin-9 (ISO-8859-15) code set
for CHAR/VARCHAR
columns, and UTF-8 for NCHAR/NVARCHAR
columns.
CHAR/VARCHAR
columns,
the client application character set (LC_ALL, LANG) must match the Latin-9/ISO-8859-15 character
set. When using NCHAR/NVARCHAR
columns, the client application character set must
be UTF-8.Solution
When your application uses a Latin-9 / ISO-8859-15 locale, create tables with the
CHAR/VARCHAR
SQL types. To store UNICODE (UTF-8) character strings, use the
NCHAR/NVARCHAR
SQL types instead. In program sources you can use
CHAR/VARCHAR
; these types can hold single and multibyte character sets, based on
the C POSIX locale.
latin9
database character set for
CHAR/VARCHAR
types. Since character set conversion is not supported, your
application can only use Latin-9 or UTF-8.Table columns using a different character encoding than the database is not supported with Genero: All table columns must use the same character encoding defined at the database level.
Based on the FGLPROFILE entry dbi.database.dbname.ifxemul.nationalchars
, the
CHAR
and VARCHAR
type names in SQL statements are converted to
CHAR/VARCHAR
or to NCHAR/NVARCHAR
Netezza types, to store UTF-8 character data.
When using a multibyte character set (such as UTF-8), define database columns as
NCHAR
and NVARCHAR
, with the size in character units, and use
character length semantics in BDL programs with FGL_LENGTH_SEMANTICS=CHAR.
When extracting a database schema from a Netezza
database, the fgldbsch schema
extractor uses the size of the column in characters, not the octet length. If you have
created a CHAR(10 (characters) )
column a in Netezza database using the UTF-8 character set, the .sch file will get a
size of 10, that will be interpreted by FGL_LENGTH_SEMANTICS as a number of bytes or characters.
With Netezza, it is not possible to defined the database client client character set: The locale used by programs must match the database locale.
See also the section about Localization.
CHAR/VARCHAR
type translation can be controlled with the following FGLPROFILE
entries:dbi.database.dsname.ifxemul.datatype.char = {
true |
false }
dbi.database.dsname.ifxemul.datatype.varchar = {
true |
false }
For
more details see IBM Informix emulation parameters in FGLPROFILE.