字符类型
M-Compatibility支持的字符类型请参见表1。
|
名称 |
描述 |
存储空间 |
|---|---|---|
|
CHAR[(n)] |
定长字符串,不足补空格。 n是指字符长度,如不带精度n,默认精度为1。 |
最大为255个字符。 |
|
VARCHAR(n) |
变长字符串。n是指字符长度。 |
最大为65532个字节。 |
|
TEXT[(n)] |
变长字符串。n是指该类型的可选字符长度,指定n后将列创建为最小的但足以容纳n字符对应的字节长度的TEXT类型。 |
最大为65535个字节。 |
|
TINYTEXT |
变长字符串。 |
最大为255个字节。 |
|
MEDIUMTEXT |
变长字符串。 |
最大为16777215个字节。 |
|
LONGTEXT |
变长字符串。 |
最大为1GB-1个字节。 |
- sql_mode参数值包含“strict_trans_tables”时,非法输入或者输入超过存储空间范围时,会报error。
- sql_mode参数值不包含“strict_trans_tables”时,非法输入或者输入超过存储空间范围时,会报warning信息,并返回截断后的值。
- sql_mode参数值包含"pad_char_to_full_length", CHAR类型作为表列和临时变量的数据类型时,输出带有尾部空格的字符串,否则输出不带尾部空格的字符串。
- 不支持‘||’连接符连接数据。
示例
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 |
--创建表。 m_db=# CREATE TABLE text_type_t1 ( BT_COL1 CHAR(10), BT_COL2 VARCHAR(10), BT_COL3 TEXT, BT_COL4 TEXT(10) ); --插入数据。 m_db=# INSERT INTO text_type_t1 VALUES ('text_test1', 'text_test2','text_test3','text_test4'); --查询表中的数据。 m_db=# SELECT * FROM text_type_t1; bt_col1 | bt_col2 | bt_col3 | bt_col4 ------------+------------+------------+------------ text_test1 | text_test2 | text_test3 | text_test4 (1 row) --删除表。 m_db=# DROP TABLE text_type_t1; --示例:CHAR类型。 --创建表。 m_db=# CREATE TABLE char_type_t2 ( BT_COL1 CHAR(5) ); --严格模式下插入的数据长度超过类型规定的长度报错。 m_db=# SET SQL_MODE = 'strict_trans_tables,only_full_group_by,no_zero_in_date,no_zero_date,error_for_division_by_zero, no_auto_create_user,no_engine_substitution'; SET m_db=# INSERT INTO char_type_t2 VALUES ('too long'); ERROR: value too long for type character(5) CONTEXT: referenced column: BT_COL1 --宽松模式下插入的数据长度超过类型规定的长度提示warning,数据截断插入。 m_db=# SET SQL_MODE = ''; SET m_db=# INSERT INTO char_type_t2 VALUES ('too long'); WARNING: value too long for type character(5) CONTEXT: referenced column: BT_COL1 INSERT 0 1 --查询表中的数据。 m_db=# SELECT * FROM char_type_t2 ; bt_col1 --------- too l (1 row) --删除表。 m_db=# DROP TABLE blob_type_t2; |