更新时间:2025-09-12 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”时,非法输入或者输入超过存储空间范围时,会报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;

相关文档