开发环境中:有的表中字段类型定义为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(byte)和varchar2(char) 细节决定成败,大家在设计数据库建表的时候一定要注意。
oracle char,varchar,varchar2的区别和使用方法 非本人总结,但是说的挺好的! 欢迎下载
Oracle SQL 函数进行BLOB转换Varchar2
浅析Oracle中char和varchar2的区别 电脑资料.docx
oracle中varchar与date的转换,number与varchar的转换.pdf
varchar2,Oracle还要进行语法分析,这个字段是多少位的,所以慢一些。相对于上千万的记录来说。一般的项目 没什么区别,随便用。 您可能感兴趣的文章:oracle to_char函数将number转成stringOracle to_char函数的...
varchar2(30) Major:varchar2(20) Grade:varchar2(20) Class:varchar2(20) Student_photo:varchar2(30) Student_Origin:varchar2(50) 2. 学生成绩表:(Student_grade) Stud_ID:varchar2(30) Object_ID:number ...
用于对比两个数据库的表结构(比如正式库和测试库 表结构的对比) 的java代码 包中有例子测试的例子,在 ... "this - CREATE_BY": "VARCHAR(20)" } } } *暂时只支持mysql, 通过对源码的简单修改 可以支持其他数据库
是处理wm_concat中以varchar处理合并列字段过小。 clob 可以加大处理。 oracle 9I oracle 10G 必备
其中,EMP_ID 是一个 NOT NULL 的 NUMBER 类型,EMP_NAME 是一个 VARCHAR2 类型,DEPT_ID 是一个 NUMBER 类型,SALARY 是一个 NUMBER 类型。该问题考察了对 Oracle 表结构设计的理解。 知识点 2: Oracle GROUP BY ...
"CALLNUMBER" VARCHAR2(15 BYTE) VISIBLE, "CODE" VARCHAR2(5 BYTE) VISIBLE, "CITY" VARCHAR2(50 BYTE) VISIBLE, "CARDTYPE" VARCHAR2(50 BYTE) VISIBLE, "PROV" VARCHAR2(50 BYTE) VISIBLE ); 导入前清空表...
数据库课程设计在线银行系统设计及实现转账功能实现,JSP与数据库的链接,日期获取ATM存取款功能实现,登出功能的实现登录与注册功能实现,session跳转个人信息查询功能实现本系统采用了可视化的集成开发环境...
oracle数据库表结构转gp数据库表结构、转mysql、数据库时表字段长度问题
LXR Varchar2 Y 20 联系人 DHHM Varchar2 Y 100 电话号码 CZHM Varchar2 Y 100 传真号码 ADDRESS Varchar2 Y 200 地址 EMAIL Varcahr2 Y 40 电子邮件 HTTP Varcahr2 Y 40 主页地址 DZL Number N 3,2 ...
为了方便更好的设计数据库,特意为用户讲述了以下它们呢之间的关系!
2.调用 compare 方法 获取对比结果 ,(json格式的数据) 格式化之后如下 : { "TABLE": { //表级别的变化 新增 或者删除的表 "新增": [], "删除": [] }, "COLUMN": { //字段级别的编号的变化 "TAB_TASK_REC...
讲述主流大型数据库oracle和DB2的数据类型
VARCHAR2 -> 文本/varchar/char CHAR -> 文本/varchar/char 日期 -> 没有时区/日期的时间戳 TIMESTAMP -> 没有时区的时间戳 带时区的时间戳 -> 带时区的时间戳 NUMBER -> 十进制/整数/smallint(提供合适的值) ...
Oracle接收长度大于4000的字符串 Oracle接收长度大于4000的字符串