• mysql的varchar和oracle的varchar2比较


    首先说结论:

    1.mysql存储的是字符数(不分语言)

    2.oracle存储的需要看定义,如果定义为varchar2(n),则默认是n个字节,如果是varchar2(n char)则是n个字节.

    3.oracle的实际存储有受到限制,如果是12c之前,那么即使可以定义varchar2(4000 char)也无法存入4000个汉字。

    以上结论是基于以下情形:

    1.mysql-8.x 字符集utf8mb4

    2.oracle-12.2.0 ,字符集合al32utf8(三个字节存储一个汉字)

    --

    oracle12c即使定义为varchar2(4000 char),如果字符集是al32utf8,那么实际只能存入4000/3≈1333个汉字。

    create table t_test_datalength(id int ,name varchar2(3 char));
    alter table t_test_datalength add v4000 varchar2(4000 char);
    declare
      vn_char varchar2(4000 char) := '';
      i       int;
      ttl     int;
    begin
      for i in 1 .. 400 loop
        vn_char := vn_char || '我们大家都很好啊匹配';
      end loop;
      dbms_output.put_line(vn_char);
      ttl := length(vn_char);
      dbms_output.put_line(ttl);
      update t_test_datalength set v4000 = vn_char;
    end;
     

    执行后,会提示ora-12899

  • 相关阅读:
    stl
    Chopsticks Hdu1500
    Dp Hdu1421 搬寝室
    AOj448有趣的矩阵
    树状数组Hdu1541
    树状数组Hdu1166
    Floyd最小环Hdu1599
    三大主流ETL工具选型
    ETL概述
    POI操作Excel常用方法总结
  • 原文地址:https://www.cnblogs.com/lzfhope/p/12788548.html
Copyright © 2020-2023  润新知