Reviewed-by: Hasko, Vladimir <vladimir.hasko@t-systems.com> Reviewed-by: Pruthi, Vineet <vineet.pruthi@t-systems.com> Co-authored-by: Lu, Huayi <luhuayi@huawei.com> Co-committed-by: Lu, Huayi <luhuayi@huawei.com>
17 KiB
String Types
Overview
MySQL interprets length specifications in character column definitions in character units. This applies to the CHAR, VARCHAR, and TEXT types. DSC supports the following type conversions:
Type Mapping
MySQL String Type |
MySQL INPUT |
GaussDB(DWS) OUTPUT |
|---|---|---|
CHAR |
CHAR[(0)] CHAR[(n)] |
CHAR[(1)] CHAR[(4n)] |
CHARACTER |
CHARACTER[(0)] CHARACTER[(n)] |
CHAR[(1)] CHAR[(4n)] |
NCHAR |
NCHAR[(0)] NCHAR[(n)] |
CHAR[(1)] CHAR[(4n)] |
LONGTEXT |
LONGTEXT |
TEXT |
MEDIUMTEXT |
MEDIUMTEXT |
TEXT |
TEXT |
TEXT |
TEXT |
TINYTEXT |
TINYTEXT |
TEXT |
VARCHAR |
VARCHAR[(0)] VARCHAR[(n)] |
VARCHAR[(1)] VARCHAR[(4n)] |
NVARCHAR |
NVARCHAR[(0)] NVARCHAR[(n)] |
VARCHAR[(1)] VARCHAR[(4n)] |
CHARACTE VARYING |
CHARACTE VARYING |
VARCHAR |
- During CHAR/CHARACTER/NCHAR conversion, if the precision is less than or equal to 0, it is converted to CHAR(1). If the precision is greater than 0, it is converted to a precision level four times that of the CHAR type.
- During VARCHAR/NVARCHAR conversion, if the precision is less than or equal to 0, it is converted to VARCHAR(1). If the precision is greater than 0, it is converted to a precision four times that of the VARCHAR type.
Input: CHAR
In MySQL, the length of a CHAR column is fixed to the length that you declare when you create the table. The length can be any value from 0 to 255. When CHAR values are stored, they are right-padded with spaces to the specified length.
CREATE TABLE IF NOT EXISTS `runoob_dataType_test`( `dataType_1` CHAR NOT NULL, `dataType_2` CHAR(0) NOT NULL, `dataType_3` CHAR(255) NOT NULL );
Output
CREATE TABLE IF NOT EXISTS "public"."runoob_datatype_test"
(
"datatype_1" CHAR NOT NULL,
"datatype_2" CHAR(1) NOT NULL,
"datatype_3" CHAR(1020) NOT NULL
)
WITH ( ORIENTATION = ROW, COMPRESSION = NO )
NOCOMPRESS
DISTRIBUTE BY HASH ("datatype_1");
Input: [LONG|MEDIUM|TINY]TEXT
CREATE TABLE IF NOT EXISTS `runoob_dataType_test`(
`dataType_1` LONGTEXT,
`dataType_2` MEDIUMTEXT,
`dataType_3` TEXT,
`dataType_4` TINYTEXT
);
Output
CREATE TABLE IF NOT EXISTS "public"."runoob_datatype_test"
(
"datatype_1" TEXT,
"datatype_2" TEXT,
"datatype_3" TEXT,
"datatype_4" TEXT
)
WITH ( ORIENTATION = ROW, COMPRESSION = NO )
NOCOMPRESS
DISTRIBUTE BY HASH ("datatype_1");
Input: VARCHAR
In MySQL, values in VARCHAR columns are variable-length strings. The length can be any value from 0 to 65,535.
CREATE TABLE IF NOT EXISTS `runoob_dataType_test`(
`dataType_1` VARCHAR(0),
`dataType_2` VARCHAR(1845)
);
Output
CREATE TABLE IF NOT EXISTS "public"."runoob_datatype_test"
(
"datatype_1" VARCHAR(1),
"datatype_2" VARCHAR(7380)
)
WITH ( ORIENTATION = ROW, COMPRESSION = NO )
NOCOMPRESS
DISTRIBUTE BY HASH ("datatype_1");