zoukankan      html  css  js  c++  java
  • Oracle之数据类型问题

    做项目涉及到Oracle数据库中数据类型:字符串型的问题

      我不太清楚varchar(32)到底代表着什么?

      通过搜索了解到:oracle中有三种常用的类型:varchar2(byte),varchar2(char),nvarchar2()

      varchar2(byte):默认表示方式,varchar2(100),就相当于varchar2(100 byte),表示最大字节数为100,强调空间大小。如果数据库使用GBK编码,那么一个汉字占用2个字节,如果用UTF8,一个汉字占用3个字节

      varchar2(char):表示最大字符数为100,强调个数。无论是数字、字母、汉字都是一个字符,最多写100个,当然,汉字越多,占用的空间越大,因为一个汉字2或者3个字节。

      nvarchar2():没有字节字符之分,类似于varchar2(char),只不过nvarchar2()屏蔽数据库编码,无论是何种编码,nvarchar2()中一个汉字都占用2个字节

      实际应用中,可能会有这样的写法:nvarchar2(1400char),看似一切正常,实则不然,如果全是汉字的话,1400*3字节超过了咱们说的4000字节,而多出来的数据就不被存储

      故对于GBK编码来说:安全写法为varchar2(2000char),nvarchar2(2000)

      对于UTF8编码来说:安全写法为varchar2(1333),nvarchar2(2000)

    主要参考文章:http://www.luoxiao123.cn/oracle_varchar2_trap.html

  • 相关阅读:
    UVA 254 Towers of Hanoi
    UVA 701 The Archeologists' Dilemma
    UVA 185 Roman Numerals
    UVA 10994 Simple Addition
    UVA 10570 Meeting with Aliens
    UVA 306 Cipher
    UVA 10160 Servicing Stations
    UVA 317 Hexagon
    UVA 10123 No Tipping
    UVA 696 How Many Knights
  • 原文地址:https://www.cnblogs.com/superhonors/p/11318126.html
Copyright © 2011-2022 走看看