oracle中varchar,varchar2,nvarchar,nvarchar2有什么区别?

RunUpwind 2007-09-18 09:24:08
本人新手,问题如题,如能细致解答,不胜感激!
...全文
10124 16 打赏 收藏 转发到动态 举报
写回复
用AI写文章
16 条回复
切换为时间正序
请发表友善的回复…
发表回复
yidianshuishui 2011-11-11
  • 打赏
  • 举报
回复
学习啦,
education_study 2011-05-06
  • 打赏
  • 举报
回复
学习中~~~
dingwood 2011-01-05
  • 打赏
  • 举报
回复
学习了
imissyouyw 2009-11-18
  • 打赏
  • 举报
回复
学习了
peter_huangcw 2009-03-12
  • 打赏
  • 举报
回复
也学习
QQ153984069 2008-12-06
  • 打赏
  • 举报
回复
学习
Eclipse.. 2008-11-03
  • 打赏
  • 举报
回复
字符数据类型 CHAR CHAR 都是固定长度字符资料但oracle里面最大度为2kb,SQLServer里面最大长度为8kb
变长字符数据类型 VARCHAR2 VARCHAR Oracle里面最大长度为4kb,SQLServer里面最大长度为8kb
根据字符集而定的固定长度字符串 NCHAR NCHAR 前者最大长度2kb后者最大长度4kb
根据字符集而定的可变长度字符串 NVARCHAR2 NVARCHAR 二者最大长度都为4kb
RunUpwind 2007-09-18
  • 打赏
  • 举报
回复
网上查到:目前VARCHAR是VARCHAR2的同义词。工业标准的VARCHAR类型可以存储空字符串,但是oracle不这样做,尽管它保留以后这样做的权利。Oracle自己开发了一个数据类型VARCHAR2,这个类型不是一个标准的VARCHAR,它将在数据库中varchar列可以存储空字符串的特性改为存储NULL值。如果你想有向后兼容的能力,Oracle建议使用VARCHAR2而不是VARCHAR。

问题是:如果在varchar2字段中存储一个空字符,取出来会是什么?是null?
WangZWang 2007-09-18
  • 打赏
  • 举报
回复
varchar,varchar2,nvarchar,nvarchar2
-----------------------------------
四个类型都属于变长字符类型,
varchar和varchar2的区别在与后者把所有字符都占两字节,前者只对汉字和全角等字符占两字节。
nvarchar和nvarchar2的区别和上面一样, 与上面区别在于是根据Unicode 标准所进行的定义的类型,通常用于支持多国语言类似系统的定义。
RunUpwind 2007-09-18
  • 打赏
  • 举报
回复
急啊,大家来帮忙啊
hebo2005 2007-09-18
  • 打赏
  • 举报
回复
有N开头的是根据字符集的
2结尾的可能是双字节吧,这个不太清楚,你可以GOOGLE一下
RunUpwind 2007-09-18
  • 打赏
  • 举报
回复
谢谢,hebo2005() 的意思是 VARCHAR2 VARCHAR NVARCHAR2 NVARCHAR 最大长度都为4kb.

那么它们的区别是什么呢?
hebo2005 2007-09-18
  • 打赏
  • 举报
回复
字符数据类型 CHAR CHAR 都是固定长度字符资料但oracle里面最大度为2kb,SQLServer里面最大长度为8kb
变长字符数据类型 VARCHAR2 VARCHAR Oracle里面最大长度为4kb,SQLServer里面最大长度为8kb
根据字符集而定的固定长度字符串 NCHAR NCHAR 前者最大长度2kb后者最大长度4kb
根据字符集而定的可变长度字符串 NVARCHAR2 NVARCHAR 二者最大长度都为4kb
RunUpwind 2007-09-18
  • 打赏
  • 举报
回复
谢谢!
xspf 2007-09-18
  • 打赏
  • 举报
回复
现在版本的Oracle,VARCHAR和VARCHAR2是没有区别的,VARCHAR2和ANSI VARCHAR的区别是VARCHAR2把空串等同于null处理。这也是为什么ORACLE推荐使用VARCHAR2类型的原因,因为如果新版本Oralce的VARCHAR类型完全兼容ANSI标准时,使用varchar2的脚本可以不修改。

至于一个VARCHAR2字符要用几个字节存储,要看数据库使用的字符集,比如GBK,汉字就会占两个字节,英文1个,如果是UTF-8,汉字一般占3个字节,英文还是1个。

而NCHAR、NVARCHAR是以UNICODE-16存储,每个字符固定两个字节。
RunUpwind 2007-09-18
  • 打赏
  • 举报
回复
我做了测试,在varchar2字段中存储一个空字符,取出来也是空字符.

17,082

社区成员

发帖
与我相关
我的任务
社区描述
Oracle开发相关技术讨论
社区管理员
  • 开发
  • Lucifer三思而后行
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧