CHAR 还是 VARCHAR? 这是个问题!

网友投稿 448 2023-06-05

CHAR 还是 VARCHAR? 这是个问题!

CHAR 还是 VARCHAR? 这是个问题!

1 前言

大家好,我是明哥!

今天我们来对比下 ORACLE 与 MYSQL 中不同字符数据类型的异同,以避免因前期数据结构设计时数据类型选用不当,造成后续存储加工和处理数据时的各种坑。

2 ORACLE 与 MYSQL 中字符数据类型都有哪些

ORACLE 中内置的字符数据类型主要有以下三大类:

CHAR/NCHAR:存储固定长度的字符串,其中NCHAR使用 national character set;VARCHAR2/VARCHAR/NVARCHAR2:存储变长字符串,其中 VARCHAR 等同于 VARCHAR2,NVARCHAR2 使用 national character set;CLOB/NCLOB:存储大小可达 4GB 的字符串,其中 NCLOB 使用 national character set;

MYSQL 中字符数据类型主要有:

CHAR:存储固定长度的字符串;VARCHAR:存储变长字符串BLOB/TEXT:主要用来存储大的字符串。

可以看到:

二者都有专门用来处理较大字符串的数据类型,如 CLOB/BLOB/TEXT;二者都有处理定长字符串的数据类型,如 CHAR;二者都有处理变长字符串的数据类型,如 VARCHAR;

以下我们重点对比下二者对定长和变长字段类型,即 CHAR 和 VARCHAR ,处理时的异同。

3 ORACLE 和 MYSQL 对 CHAR 和 VARCHAR 处理的相同点在哪里?

3.1 ORACLE 和 MYSQL 对定长字段类型 CHAR 的存储处理类似,都会对用户传入的实际的字符串进行加工处理后再存储:

3.2 ORACLE 和 MYSQL 对变长字段类型 VARCHAR 的存储处理类似,都不会对用户传入的实际的字符串进行加工处理,而是直接校验存储:

3.3 ORACLE 和 MYSQL 对变长字段类型 VARCHAR 的取出处理类似

ORACLE 和 MYSQL 对变长字段类型 VARCHAR 的取出处理类似,都不会对实际存储的字段值做加工处理,而是直接返回,因为存储时已经做了校验和加工。

3.4 ORACLE 和 MYSQL 中都是 VARCHAR(ORACLE 中是 VARCHAR2)的存储空间使用率更好

ORACLE 和 MYSQL 中都是 VARCHAR(ORACLE 中是 VARCHAR2)的存储空间使用率更好,因为 CHAR 类型字段在实际长度不够时会在末尾补充空格(blank-pads)并存储这些 trailing blanks 而 VARCHAR 不会,所以 VARCHAR 可以更有效地存储数据,空间使用率更高。

4 ORACLE 和 MYSQL 对 CHAR 和 VARCHAR 处理的不同点在哪里?

4.1 ORACLE 和 MYSQL 对 CHAR 和 VARCHAR 处理的不同点,体现在如何取出 CHAR 类型的字段数据上:

4.2 ORACLE 和 MYSQL 对 CHAR 和 VARCHAR 处理的不同点,体现在如何对比 CHAR 和 VARCHAR 类型的字段数据上:

5 知识总结

CHAR and varchar in mysql

CHAR in *** and mysql

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:聊聊Docker中如何安装Redis_Exporter
下一篇:Redis锁被别人释放怎么办
相关文章