更新时间:2025-09-11 GMT+08:00
分享

字符类型

M-Compatibility支持的字符类型如表1所示。

表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”时,非法输入或者输入超过存储空间范围时,会返回截断后的值。
  • 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
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
--创建CHAR类型表。
m_db=# CREATE TABLE text_type_t1  
(
    BT_COL1 CHAR(10)
);

--插入数据。
m_db=# INSERT INTO text_type_t1 VALUES ('text_test1');

--查询表中的数据。
m_db=# SELECT *  FROM text_type_t1;
  BT_COL1
------------
 text_test1
(1 row)

--删除表。
m_db=# DROP TABLE text_type_t1;

--创建VARCHAR类型表
m_db=# CREATE TABLE text_type_t2  
(
    BT_COL2 VARCHAR(10)
);

--插入数据。
m_db=# INSERT INTO text_type_t2 VALUES ('text_test2');

--查询表中的数据。
m_db=# SELECT *  FROM text_type_t2;
  BT_COL2
------------
 text_test2
(1 row)

--删除表。
m_db=# DROP TABLE text_type_t2;

--创建TEXT类型表
m_db=# CREATE TABLE text_type_t3  
(
    BT_COL3 TEXT
);

--插入数据。
m_db=# INSERT INTO text_type_t3 VALUES ('text_test3');

--查询表中的数据。
m_db=# SELECT *  FROM text_type_t3;
  BT_COL3
------------
 text_test3
(1 row)

--删除表。
m_db=# DROP TABLE text_type_t3;

--示例:CHAR类型。
--创建表。
m_db=# CREATE TABLE char_type_t1  
(
    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_t1 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_t1 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_t1;
m_db=# SELECT * FROM char_type_t1;
 BT_COL1
---------
 too l
(1 row)

--删除表。
m_db=# DROP TABLE char_type_t1;

相关文档