黄东旭解析 TiDB 的核心优势
564
2023-06-05
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小时内删除侵权内容。