MySQL Vs. Oracle 字段长度对比

结论

oracle(12c)一个汉字是3个字节,varchar2(1)表示1个字节
mysql(8.0)一个汉字是3个字节,varchar(1)表示一个字符

oracle建表语句

CREATE TABLE "test" (   
    "f1" VARCHAR2(1), 
    "f2" VARCHAR2(2), 
    "f3" VARCHAR2(3), 
    "f4" VARCHAR2(4), 
    "f5" VARCHAR2(5), 
    "f6" VARCHAR2(6)
   ) 
image.png

通过SQL查询也可以看出

select lengthb('你') from dual;
image.png

注:oracle编码为AL32UTF8

select * from nls_database_parameters where parameter = 'NLS_CHARACTERSET'

Mysql建表语句

CREATE TABLE `test` (
  `f1` varchar(1) DEFAULT NULL,
  `f2` varchar(2) DEFAULT NULL,
  `f3` varchar(3) DEFAULT NULL,
  `f4` varchar(4) DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci;
image.png

你可能感兴趣的:(MySQL Vs. Oracle 字段长度对比)