开发环境中:有的表中字段类型定义为varchar2(20)有的表中字段类型定义为varchar2(20 byte)

varchar2(20)和varchar2(20 byte)是否相同呢?

相不相同是由数据库的参数NLS_LENGTH_SEMANTICS决定的,有两个单位,char(字符)或者字节(byte),该参数默认值为BYTE。

所以说,在默认情况下 varchar2(20) = varchar2(20 byte)。如果参数值为CHAR 就不相等。

建议:使用统一的格式如:varchar2(20)

演示:

SQL> show parameter nls_length_semantics;

NAME                                        TYPE       VALUE

------------------------------------ ----------- ------------------------------

nls_length_semantics                    string     BYTE

SQL> create table tab1 (

2  id   number(10),

3  description varchar2(20)

4  );

Table created.

SQL> create table tab2 (

2  id   number(10),

3  description varchar2(20 char)

4  );

Table created.

SQL> desc tab1;

Name                                             Null?    Type

----------------------------------------- -------- ----------------------------

ID                                                     NUMBER(10)

DESCRIPTION                                                  VARCHAR2(20)

SQL> desc tab2;

Name                                             Null?    Type

----------------------------------------- -------- ----------------------------

ID                                                     NUMBER(10)

DESCRIPTION                                                  VARCHAR2(20 CHAR)

SQL> alter session set nls_length_semantics=char;

Session altered.

SQL> create table tab3 (

2  id number(10),

3  description varchar2(20)

4  );

Table created.

SQL> desc tab1;

Name                                             Null?    Type

----------------------------------------- -------- ----------------------------

ID                                                     NUMBER(10)

DESCRIPTION                                                  VARCHAR2(20 BYTE)

SQL> desc tab2;

Name                                             Null?    Type

----------------------------------------- -------- ----------------------------

ID                                                     NUMBER(10)

DESCRIPTION                                                  VARCHAR2(20)

SQL> desc tab3;

Name                                             Null?    Type

----------------------------------------- -------- ----------------------------

ID                                                     NUMBER(10)

DESCRIPTION                                                  VARCHAR2(20)

注意:对于SYS和SYSTEM而言不受该NLS_LENGTH_SEMANTICS影响,始终为BYTE
请不要随意修改SYSTEM级别的NLS_LENGTH_SEMANTICS,否则一些成品套件例如EBS将可能无法正常运行。

Oracle中varchar2(20)和varchar2(20 byte)区别相关推荐

  1. 在Oracle中CHAR,NCHAR,VARCHAR,VARCHAR2,NVARCHAR2这五种类型的区别

    [在Oracle中CHAR,NCHAR,VARCHAR,VARCHAR2,NVARCHAR2这五种类型的区别 ] 1.CHAR(size)和VARCHAR(size)的区别  CHAR为定长的字段,最 ...

  2. oracle中drop、delete和truncate的区别

    oracle中drop.delete和truncate的区别 oracle中可以使用drop.delete和truncate三个命令来删除数据库中的表,网上有许多文章和教程专门讲解了它们之间的异同,我 ...

  3. oracle pga的作用,浅析Oracle中PGA和UGA两者间的区别

    初学Oracle时,你可能会对Oracle中PGA和UGA两者间的区别产生疑问,这里就PGA和UGA两者间的区别发表下个人意见,在这里拿出来和大家分享一下. The Process Memory除SG ...

  4. Oracle中TRUNCATE、DELETE和DROP的区别?

    Oracle中TRUNCATE.DELETE和DROP的区别? 区别: 1.删除表时表数据方面 delete是每次从表中删除一行,同时将删除操作作为事务写进日志以便回滚操作,在有该操作的触发器时,执行 ...

  5. oracle中主键和唯一索引的区别说明

    上周六去参加上海Oracle WDP俱乐部沙龙的一次交流,其中提到了关于"Oracle中主键和唯一索引的区别",基本上大家都可以说上几个,在网上也可以找到,但是总感觉不太全,根据自 ...

  6. 分组函数group by和Oracle中分析函数partition by的用法以及区别

    今天有个同事给我打电话问我题目列出的这个问题,在日常开发中,确实它们俩都是与分组有关的,但是需要注意的是一个是分组函数另一个是分析函数,讲解用到的表就以Oracle中schema的scott的EMP表 ...

  7. oracle 日期 区别,oracle中日期类型 to_date 和to_timestamp什么区别啊?

    1.to_date() 和to_timestamp()区别 由于oracle中date类型只支持到秒,不支持到毫秒,所以to_date()不能取到毫秒.如果要取到毫秒,oracle 9i以上版本,可以 ...

  8. ORACLE中分钟用mm和mi 标示区别

    oracle中的日期格式为: 坑之一:HH和HH24 12小时制:yyyy-MM-dd HH:mi:ss 24小时制:yyyy-MM-dd HH24:mi:ss 在java中HH和hh是区分12小时制 ...

  9. oracle中drop和delete,oracle中delete drop truncate的用法和区别

    数据库的运维中,经常会遇到delete drop truncate的操作,那么如何去把握它们的用法和区别呢? 比如当数据库空间爆满,已经增长到存储空间单个存储文件的最大值32G.你需要通过一些办法释放 ...

  10. 转 Oracle 删除表,oracle 中删除表 drop delete truncate 的区别

    相同点,使用drop delete truncate 都会删除表中的内容 drop table 表名 delete from 表名(后面不跟where语句,则也删除表中所有的数据) truncate ...

最新文章

  1. 【Python】青少年蓝桥杯_每日一题_10.27_日期差值的判断
  2. 计算机与新闻业未来发展,计算机学院举办“智创未来,谈思维与职业发展”活动...
  3. new HashMap<String, Object>();
  4. Deskreen – 将电脑屏幕共享到浏览器中,做第二块屏幕[Win/macOS/Linux]
  5. Shell脚本实现模拟并发及并发数控制
  6. [Java] 蓝桥杯ALGO-118 算法训练 连续正整数的和
  7. 如何通过注册表修改默认程序
  8. 如何压缩ppt文件,这个方法你该知道
  9. 寂寞沙洲冷c语言程序,周传雄《寂寞沙洲冷》钢琴谱
  10. 关于AI-人工智能看法,进行漫谈。
  11. 编写.bat执行jar包
  12. 九种引人瞩目的开源大数据技术
  13. shader forge初级篇|反射材质的运用
  14. esp8266保存html文件,八,ESP8266 文件保存数据(基于Lua脚本语言)
  15. 微信开发:NAT穿透
  16. 有一头母牛,它每年年初要生一头小母牛;每头小母牛从第四个年头起,每年年初也要生一头小母牛。按此规律,若无牛死亡,第20个年头上共有多少头母牛
  17. 春招进来的新人23岁Java开发上来秀了波操作,真是扮猪吃老虎
  18. 御用导航提示页面_终实现微信位置发送到汽车导航 越用越好用
  19. 鸿蒙系统需要大运存吗,荣耀5G最新确认,鸿蒙系统+双5000万+16GB大运存,这才是荣耀...
  20. 洛谷 P1496 火烧赤壁 题解 —— 离散化

热门文章

  1. 【报告分享】2019中国社交电商白皮书.pdf
  2. java实现c语言的函数_C语言tolower函数介绍、示例和实现
  3. 读书笔记——数据压缩入门(柯尔特·麦克安利斯)中
  4. Leetcode每日一题:1122.relative-sort-array(数组的相对排序)
  5. Leetcode每日一题:15.3sum(三数之和)
  6. 白板机器学习笔记 P3-P8 高斯分布
  7. 50行代码的MVVM,感受闭包的艺术
  8. 计算机图形图像发展前景,计算机图形学发展前景有什么趋势?
  9. 如何在sql存储过程中打log_SQL语句优化
  10. 电脑控制手机屏幕软件_手机屏幕如何投屏到电脑