CHAR与NCHAR在Oracle数据库是常用的类型,不过两种数据类型是互相不兼容的,这里大概简要谈一下这2种数据类型吧。
在Oracle中,CHAR类型是一种固定长度的字符串类型,最大长度是2000个byte,在这里要注意了,是2000个byte,并不是2000个字符的意思。1个字符在Oracle中可能是1个byte到4个byte不等,这个要看数据库的设置了。这个是数据库中有一个参数NLS_LENGTH_SEMANTICS来决定的。CHAR类型有一个特点,就是字符长度总是固定的,也就是说,如果你声明了一个COLUMN类型为CHAR(10),如果你只插入了1个字符,那么系统也会自动在这个字符的右边补上9个空格,Oracle的CHAR类型中,补空格是在右侧补的。但是如果你插入了11个字符,那么就会系统出错,而不会自动截成10个字符。
NCHAR数据类型可能不是经常见到,不过在许多数据库设计中也有了。NCHAR数据类型是专为UNICODE字符而设计的,而且只能插入UNICODE字符串,NCHAR也是最大长度为2000个byte,不过每个字符占多少个byte,是由数据库的国际字符集决定的。同样的,如果插入字符不足定义的长度,比如NCHAR(10)类型中只插入了1个字符,系统会自动在右侧补充9个空格。
NCHAR和CHAR之间是不能直接互相兼容的,而是要通过Oracle的函数或者语法进行转换,比如说从NCHAR转成CHAR是要用TO_CHAR函数进行转换,而CHAR转换为NCHAR,比如说'ABCDE'这个CHAR字符串,则要通过N'ABCDE'来进行表示,也就是说前面要有一个N这个特殊字符,表示是NCHAR类型。
CREATE PROC p_ToUnicode
@type tinyint=0 --修改方式,0=仅查询可修改情况,1=仅所有列可修改时才修改,2=修改可修改列,报告不可修改列
SET NOCOUNT ON
--查询非unicode列转换为unicode列的可行性
SELECT TableName=o.name,FieldName=c.name,
FieldType=t.name+N'(
SQL> create table test_
char
(name
char
(2000));Table createdSQL> insert into test_
char
values('test');1 row...
在本教程
中
将学习
Oracle
CHAR
数据类型
,它是一种固定长度的字符串类型。
Oracle
CHAR
数据类型
简介
Oracle
CHAR
数据类型
用于存储固定长度的字符串。
CHAR
数据类型
可以存储1到2000字节的字符串。要定义一个
CHAR
列,需要用字节或字符来指定一个字符串长度,如下所示:
CHAR
(length
BYTE
)
CHAR
(length
CHAR
)如果没有明确指定
BYTE
或
CHAR
,那么O...
ORACLE
字符类型详解----
char
、n
char
、var
char
、var
char
2、nvar
char
2
转载自:http://www.2cto.com/database/201310/252696.html
oracle
提供了五种字符
数据类型
:
char
、n
char
、var
char
、var
char
2、nvar
char
2。
char
:使用
数据库
字符集来存储数据,
在
Oracle
数据表和程序类型
中
,字符类型可能是使用最多的一种了。从历史上看,
Oracle
首先推出了固定长度
char
类型字段,之后才推出了变长度类型var
char
2。目前,主流
Oracle
应用开发都已经普遍接受了var
char
2作为数据表字段类型表示。如果存在超长字符,都考虑使用CLOB这类大对象进行存储。但是,我们在实际领域
中
,还是会在各种遗留系统
中
发现很多
char
类型字段。而且连带这些遗留系统...
尽量避免使用
Oracle
的
char
类型,即使只有一个字节,也应该使用var
char
2类型。
char
的缺点主要有两个1.占用空间大 , 如果声明一个
char
(10)的字段,仅仅使用了一个字节,剩余的9个字节也会使用空格补齐。2.Java
中
回查不到数据,在下面最常用的JDBC
中
,查询一个
char
类型的字段,却查不到任何结果.
不论在表段还是索引段
中
,
CHAR
都会占用最大的存储空间,这就够糟糕了,避免使用
CHAR
/N
CHAR
类型还有另外一个很重要的原因:
CHAR
/N
CHAR
类型还会给使用这些数据的应用带来混乱,原因与字符串的比较的规则有关,也与执行字符串比较多严格程度有关。使用诸如UTF-8的多字节字符集时,建议在VAR
CHAR
2/
CHAR
定义
中
使用
CHAR
修饰符,也就是说使用VAR
CHAR
2(80
CHAR
),而不是VAR
CHAR
2(80),因为是要定义一个实际上能存储80字符数据的列。
1
Oracle
中
的
数据类型
1.1字符类型
字符串
数据类型
还可以依据存储空间分为固定长度类型(
CHAR
) 和可变长度类型(VAR
CHAR
2/NVAR
CHAR
2)两种。
1.1.1
CHAR
类型
CHAR
类型,定长字符串,会用空格填充来达到其最大长度。非 NULL 的
CHAR
(12)总是包含 12 字节信息。
CHAR
字段最多可以存储 2,000 字节的信息。如果创建表时,不指定
CHAR
长度,则默认为 1。
1.1.2VAR
CHAR
2 类型
今天在做一个前台查询功能的时候,需要从
数据库
中
查询一些数据,显示在前台的jsp页面上,然会自己就写了一个SQL,在Oralce
数据库
上运行一下,看看是否能查询出数据,结果是没有查询到数据,找个一个上午的问题,终于找到了查询不到数据的问题所在,在我写的查询SQL
中
包含了一个left join的左连接查询,问题就出在这个左连接查询的连接字段上。
查询不到数据的原因在于 连接的字段的
数据类型
不一样,
数据库
char
,var
char
,n
char
类型区别1、
char
类型是一个字节
char
(8)只能存8字母,
char
定长,不足长度加SPACE2、n
char
类型是双字节 n
char
(8)能存8个汉字,n
char
能包含汉字,包含 n 个字符的固定长度 Unicode 字符数据。3、var
char
类型是可变的、即如果 var
char
(8)你只存了一个字母、在内存
中
只占一个字节,var
char
可...