oraclevarchar2汉字_oracle中文字符
ORACLE中有哪些数据类型
常用的数据库字段类型如下:
oraclevarchar2汉字_oracle中文字符
oraclevarchar2汉字_oracle中文字符
字段类型 中文说明 限制条件 其它说明
CHAR 固定长度字符串 长度2000 bytes
VARCHAR2 可变长度的字符串 长度4000 bytes 可做索引的长度749
NCHAR 根据字符集而定的固定长度字符串 长度2000 bytes
NVARCHAR2 根据字符集而定的可变长度字符串 长度4000 bytes
LONG 超长字符串 长度2G(231-1) 足够存储大部头著作
LONG RAW 可变长度的二进制数据 长度2G 同上
BLOB 二进制数据 长度4G
CLOB 字符数据 长度4G
NCLOB 根据字符集而定的字符数据 长度4G
BFILE 存放在数据库外的二进制数据 长度4G
NROWID 二进制数据表中记录的行号 长度4000 bytes
NUMBER(P,S) 数字类型 P为整数位,S为小数位
DECIMAL(P,S) 数字类型 P为整数位,S为小数位
INTEGER 整数类型 小的整数
REAL 实数类型 NUMBER(63),精度更高
数据类型 参数 描述
char(n) n=1 to 2000字节 定长字符串,n字节长,如果不指定长度,缺省为1个字节长(一个汉字为2字节)
varchar2(n) n=1 to 4000字节 可变长的字符串,具体定义时指明长度n,这种数据类型可以放数字、字母以及ASCII码字符集(或者EBCDIC等数据库系统接受的字符集标准)中的所有符号。
如果数据长度没有达到值n,Oracle 8i会根据数据大小自动调节字段长度,如果你的数据前后有空格,Oracle 8i会自动将其删去。VARCHAR2是最常用的数据类型。可做索引的长度BFILE 包含一个大型二进制文件的,其储存在数据库的外面;使得可以以字符流I/O访问存在数据库上的外部LOB;大小为4G字节.3209。
number(m,n) m=1 to 38
n=-84 to 127 可变长的数值列,允许0、正值及负值,m是所有有效数字的位数,n是小数点以后的位数。
如:number(5,2),则这个字段的值是99,999,如果数值超出了位数限制就会被截取多余的位数。
如:number(5,2),但在一行数据中的这个字段输入575.316,则真正保存到字段中的数值是575.32。
如:number(3,0),输入575.316,真正保存的数据是575。
date 无 从公元前4712年1月1日到公元4712年12月31日的所有合法日期,Oracle 8i其实在内部是按7个字节来保存日期数据,在定义中还包括小时、分、秒。
缺省格式为DD-MON-YY,如07-11月-00 表示2000年11月7日。
long 无 可变长字符列,长度限制是2GB,用于不需要作字符串搜索的长串数据,如果要进行字符搜索就要用varchar2类型。long是一种较老的数据类型,将来会逐渐被BLOB、CLOB、NCLOB等大的对象数据类型所取代。
raw(n) n=1 to 2000 可变长二进制数据,在具体定义字段的时候必须指明长度n,Oracle 8i用这种格式来保存较小的图形文件或带格式的文本文件,如Mosoft Word文档。
raw是一种较老的数据类型,将来会逐渐被BLOB、CLOB、NCLOB等大的对象数据类型所取代。
long raw 无 可变长二进制数据,长度是2GB。Oracle 8i用这种格式来保存较大的图形文件或带格式的文本文件,如Mosoft Word文档,以及音频、视频等非文本文件。
在同一张表中不能同时有long类型和long raw类型,long raw也是一种较老的数据类型,将来会逐渐被BLOB、CLOB、NCLOB等大的对象数据类型所取代。
blob /clob /nclob 无 三种大型对象(LOB),用来保存较大的图形文件或带格式的文本文件,如Mosoft Word文档,以及音频、视频等非文本文件,长度是4GB。
LOB有几种类型,取决于你使用的字节的类型,Oracle 8i实实在在地将这些数据存储在数据库内部保存。
bfile 无 在数据库外部保存的大型二进制对象文件,长度是4GB。
这种外部的LOB类型,通过数据库记录变化情况,但是数据的具体保存是在数据库外部进行的。
大小由作系统决定。
数据类型大约分为:character, number, date, LOB, 和RAW等类型。虽然ORACLE8i也允许你自定义数据类型,但是它们是最基Character 数据类型
Character 数据类型用来存储字母数字型数据。当你在oracle 中定义一个character 数据时,通常需要制定字段的长度,它是该字段的长度。ORACLE提供以下几种character 数据类型:
CHAR() CHAR数据类型是一种有固定长度和长度的字符串。存储在数据类型为CHAR字段中的数据将以空格的形式补到长度。长度定义在1——2000字节之间。
当你创建一个CHAR型字段,数据库将保证在这个字段中的所有数据是定义长度,如果某个数据比定义长度短,那么将用空格在数据的右边补到定义长度。如果长度大于定义长度将会触发错误信息。
VARCHAR() varchar型数据是varchar2型数据的快照。
VARCHAR2() varchar2数据类型是一种可变长度的、有长度的字母数字型数据。Varchar2类型的字段长度可以达到4000字节,Varchar2类型的变量长度可以达到32676字节。
一个空的varchar2(2000)字段和一个空的varchar2(2)字段所占用的空间是一样的。
NCHAR() 和 NVARCHAR2() NCHAR() 和 NVARCHAR2()数据类型分别与CHAR() 和 VARCHAR2()类型是相同的,只不过它们用来存储NLS(National Language Support)数据。
LONG LONG 数据类型是一个遗留下来的而且在将来不会被支持的数据类型。它将被LOB(Large Object)数据类型所代替。
比较规则 Varchar2和char数据类型根据尾部的空格有不同的比较规则。对Char型数据,尾部的空格将被忽略掉,对于Varchar2型数据尾部带空格的数据排序比没有空格的要大些。比如:
Char 型数据: ‘YO’=‘YO ’
Varchar2型数据: ‘YO’<’YO ’
Numberic 数据类型
Numberic 数据类型用来存储负的和正的整数、分数和浮点型数据,范围在-110-103 和9.999…90125之间,有38位的度。标识一个数据超出这个范围时就会出错。
本的数据类型。
VARCHAR2(size) 可变长度的字符串,其长度为size个字节;size的值是4000,而最小值是1;你必须指定一个VARCHAR2的size;
NVARCHAR2(size) 可变长度的字符串,依据所选的字符集,其长度为size个字符或字节;size的值取决于储存每个字符所需的字节数,其上限为4000;你必须指定一个NVARCHAR2的size;
NUMBER(p,s) 精度为p并且数值范围为s的数值;精度p的范围从1到38;数值范围s的范围是从-84到127;
例如:NUMBER(5,2) 表示整数部分3位,小数部分为2位;
NUMBER(5,-2) 表示数的整数部分为7其中对整数的倒数2位为0,前面的取整。
NUMBER 表示使用默认值,即等同于NUMBER(5);
LONG 可变长度的字符数据,其长度可达2G个字节;
DATE 有效日期范围从公元前4712年1月1日到公元后4712年12月31日
RAW(size) 长度为size字节的原始二进制数据,size的值为2000字节;你必须为RAW指定一个size;
LONG RAW 可变长度的原始二进制数据,其最长可达2G字节;
CHAR(size)}…… 固定长度的字符数据,其长度为size个字节;size的值是2000字节,而最小值和默认值是1;
NCHAR(size) 也是固定长度。根据Unicode标准定义
CLOB 一个字符大型对象,可容纳单字节的字符;不支持宽度不等的字符集;为4G字节
NCLOB 一个字符大型对象,可容纳单字节的字符;不支持宽度不等的字符集;为4G字节;储存字符集
BLOB 一个二进制大型对象;4G字节
1、VARCHAR2(size) 可变长度的字符串,其长度为4000个字节;
2、NUMBER(p,s) 精度为p并且数值范围为s的数值;精度p的范围从1到38;数值范围s的范围是从-84到127;
例如:NUMBER(5,2) 表示整数部分3位,小数部分为2位;
NUMBER(5,-2) 表示数的整数部分为7其中对整数的倒数2位为0,前面的取整。
NUMBER 表示使用默认值,即等同于NUMBER(5);
3、LONG 是可变长度的字符数据,其长度可达2G个字节;
4、DATE 日期类型,有效日期范围从公元前4712年1月1日到公元后4712年12月31日
5、RAW(size) 原始二进制数据,size的值为2000字节;
6、LONG RAW 可变长度的原始二进制数据,其最长可达2G字节;
7、CHAR(size) 固定长度的字符数据,其值是2000字节,而最小值和默认值是1;
8、NCHAR(size) 也是固定长度。根据Unicode标准定义;
9、CLOB 一个字符大型对象,可容纳单字节的字符;不支持宽度不等的字符集;为4G字节;
10、NCLOB 一个字符大型对象,可容纳单字节的字符;不支持宽度不等的字符集;为4G字节;
11、BLOB 一个二进制大型对象;4G字节;
12、BFILE 包含一个大型二进制文件的,其储存在数据库的外面;使得可以以字符流I/O访问存在数据库上的外部LOB;大小为4G字节;
select column_name,data_type,data_length from all_tab_columns where table_name='A' and column_name in ('id','age','name')
varchar
varchar2
number
date
blob
clob
在Oracle资料中,怎么将VARCHAR2转化为NUMBER?
v_code := ltrim(v_code,',');在Oracle资料中,怎么将VARCHAR2转化为NUMBER?
修改表字段数值型别:eg:create table haha_(remark varchar2(10));-->alter table haha_ modify remark number(2,2);
把字元型转换成数值型:select to_number(t.remark) from haha_ t;
希望可以帮到你~~~
SQL语句VARCHAR2型别转化为NUMBER型别,该怎么解决
SELECT TO_NUMBER('1254875') FROM DUAL;
不过varchar值中必须全是数字的
怎么把mysql资料转化为oracle
1.修改资料库连线字串:
如:
驱动器.mysql.jdbc.Driver 改为 oracle.jdbc.driver.OracleDriver
连线字串jdbc:mysql:localhost:3306/xxx 改为 jdbc:oracle:thin:@localhost:1521:sid
2.调整SQL语句:
如:
分页查询SELECT FROM TABLE_NAME LIMIT 1, 20 改为 SELECT FROM (SELECT A., ROWNUM RN FROM (SELECT FROM TABLE_NAME) A WHERE ROWNUM <= 20) WHERE RN >= 1
3.将mysql库中的资料汇入到oracle库:
可以手工进行,如将mysql中的资料转储为sql文,作下调整,在oracle中执行;
建议使用相关工具,如Oracle SQL Dloper。
4.将连线资料库的jar包换成oracle的。
Oracle怎样把varchar2型转成number型
oracle中纯数字的varchar2型别和number型别自动转换:
比如:
两个表的栏位定义了不同的型别。一个栏位是varchar2型别,另一个栏位是number型别,内容如下:'00187'和187。在使用中发现会自动将varchar2型别转换为number,即187和187。
测试的sql:
select
case when '0110' = 110 then
else
'false'
end
from dual;
------------
select
case when to_number('0110') = to_number(110) then
else
'false'
end
from dual;
结论:结果都是true。为了保险起见还是用to_number()进行转换更好一些。
1、Converts a string to the NUMBER data type(将字串转换为数字资料型别)
TO_NUMBER(
select to_number('00001228') from dual;
2、Converts a HEX number to FLOAT(转换一nvarchar不区分中英文,比如说:你定义了nvarchar(20),你可以存入20个英文字母/汉字或中英文组合,这个20定义的是字符数而不是字节数个十六进位制数的浮标)
TO_NUMBER(
SELECT TO_NUMBER('0A', 'XX') FROM dual;
TO_NUMBER(
'
SELECT TO_NUMBER(100000,'XXXXXXXX') FROM dual;
收下varchar2中存的必须要是数字,否则转换会失败
直接用to_number即可
如select to_number('100') from dual;
varchar2和nvarchar的区别
使用函数:to_numberVARCHAR2是Oracle提供的特定数据类型,Oracle可以保证VARCHAR2在任何版本中该数据类型都可以向上和向下兼容。
VARCHAR在Oracle中不建议使用。
具体到NVARCHAR2和VARCHAR2的区别,从使用角度来看区别在于:NVARCHAR2在计算长度时和字符集相关的,例如数据库是中文字符集时以长度10为例,则
1、NVARCHAR2(10)是可以存进去10个汉字的,如果用来存英文也只能存10个字符。
2、而VARCHAR2(10)可变长度,非 Unicode 字符数据。n 的取值范围为 1 至 8,000。max 指示存储大小是 2^31-1 个字节。存储大小是输入数据的实际长度加 2 个字节,用于反映存储的数据的长度。所输入数据的长度可以为 0 个字符。的话,则只能存进5个汉字,英文则可以存10个。
oracle如何用sql语句获取varchar2字段的长度
Oracle 8i可以读取、查询BFILE,但是不能写入。oracle中获取字符串varchar2的长度的方法:
select length(laytitle) from xxx
这样就可以返回字符串的实际长度。
select a.DATA_LENGTH
from user_tab_columns a
where B0A1 - F7FEa.TABLE_NAME = 'CO_BANK_ACC'
and a.COLUMN_NAME = 'BANKNAME'
and a.DATA_TYPE = 'VARCHAR2'
select length(字段名) from 表名
select from user_tables
在里面找到相关的字段
在oracle数据库中为什么使用varchar2类型而不使用char和varchar
例如:
asv_char
varchar2(10);
c_char
char(10);
varchar2:对于定义长度的变量或表中的字段的长度可变,就是定义varchar2(10),你只有一个字符时,变量或表中的字段里面就只保存了1个字符,不补空格,v_char='A';length(v_char)=1。
c_char/varchar:是定长数据:赋值FLOAT 浮点数类型 NUMBER(38),双精度c_char='A',实际上是:c_char='A
如果作比较的话如果使用c_char/varchar,你会比较痛苦的
if
c_char=v_char
then
这样的语句出来的肯定是:false否(else)里面的,要对c_char实行rtrim才是:真:if
rtrim(c_char)=v_char
then
这才返回:ture
Oracle怎样把varchar2型转成number型
as使用函数:to_number即可转型。
Oracle Database,又名Oracle RDBMS,或简称Oracle。是甲骨文公司的一款关系数据库管理系统。它是在数据库领域一直处于领先地位的产品。可以说Oracle数据库系统是目前世界上流行的关系数据库管理系统,系统可移植性好、使用方便、功能强,适用于各类大、中、小微机环境。
ORACLE
数据库被划分成称作为表空间的逻辑区域——形成ORACLE数据库的逻辑结构。一个ORACLE数据库能够有一个或多个表空间,而一个表空间则对应着一个或多个物理的数据库文件。表空间是ORACLE数据库恢复的最小单位,容纳着许多数据库实体,如表、视图、索引、聚簇、回退段和临时段等。
varchar2型转成number型的前提条件是varchar2中存放的数据必须是数字字符,否则在转换过程中会报错。
具体方法:
select to_number('100.10') from dual;结果:
oracle中把varchar2转成number类型的方法是用to_number函数来完成,使用TO_NUMBER函数将字符转换为数字,To_number函数的格式如下:TO_NUMBER(char[, '格式'])。
varchar2型转成number型的前提条件是varchar2中存放的数据必须是数字字符,否则在转换过程中会报错。
具体方法:select to_number('100.10') from dual;
结果:(4000),而在plsql中,这个大小的限制变为32000左右,这是因为表示其大小的字节只有两个。
ORACLE中怎样用正则表达式过滤中文字符
从表里提取汉字, 需要考虑字符集, 不同的字符集汉字的编码有所不同
设数据库字符集编码是GB2312, 环境变量(注册表或其它)的字符集也是GB2312编码
并且保存到表里的汉字也都是GB2312编码的
那么也就是汉字是双字节的,且简体汉字的编码范围是
换算成10进制就是
B0 A1 F7 FE
176,161 - 247,254
我们先看一下asciistr函数的定义
Non-ASCII characters are converted to the form xxxx, where xxxx represents a UTF-16 code unit.
但是这并不表示以 "" 开始的字符就是汉字了
SQL> select from test;
Nvarchar对空串不处理,varchar2将空串当做null来处理。varchar存放固定长度的字符串,长度是2000,varchar2是存放可变长度的字符串,长度是4000。如果是要更换不同的数据库,例如mysql,那么就用varchar,如果就用oracle,那么用varchar2比较好一点。AME
--------------------
,啊OO10哈
大家好aa/
☆大海123
★ABC
这里第5条记录有一个实心的五角星
然后用asciistr函数转换一下试试
SQL> select name,asciistr(name) from test;
-------------------- ----------------------
,啊OO10哈 ,554AOO1054C8
你好aa 4F60597Daa
大家好aa/ 59275BB6597Daa/
☆大海123 260659276D77123
★ABC 2605ABC
我们看到一条记录的实心五角星也是 ""开头的
此时我们就不能用asciistr(字段)是否存在 "" 来判断是否含有汉字了.
我的函数如下,基本思路是判断字符的编码是否在GB2312规定的汉字编码范围之内
[PHP]
create or replace function get_chinese(p_name in varchar2) return varchar2
v_code varchar2(30000) := '';
v_chinese varchar2(4000) := '';
v_comma pls_integer;
v_code_q pls_integer;
v_code_w pls_integer;
begin
if p_name is not null then
select replace(substrb(dump(p_name,1010),instrb(dump(p_name,1010),'ZHS16GBK:')),'ZHS16GBK: ','') into v_code from dual where rownum=1;
for i in 1..length(p_name) loop
if lengthb(substr(p_name,i,1))=2 then
v_comma := instrb(v_code,',');
v_code_q := to_number(substrb(v_code,1,v_comma-1));
v_code_w := to_number(substrb(v_code,v_comma+1,abs(instrb(v_code,',',1,2)-v_comma-1)));
if v_c'true'ode_q>=176 and v_code_q<=247 and v_code_w>=161 and v_code_w<=254 then
v_chinese := v_chinese||substr(p_name,i,1);
end if;
v_code := ltrim(v_code,'1234567890');
end if;
v_code := ltrim(v_code,'1234567890');
end loop;
return v_chinese;
else
return '';
end if;
end;
/.
[/PHP]
好,现在来执行一些语句
SQL> select from test;
NAME
--------------------
,啊OO10哈
大家好aa/
☆大海123
★ABC
5 rows selected.
1. 列出有汉字的记录
SQL> select name from test where length(get_chinese(name))>0;
NAME
--------------------
,啊OO10哈
大家好aa/
☆大海123
4 rows selected.
2. 列出有汉字的记录,并且只列出汉字
SQL> select get_chinese(name) from test where length(get_chinese(name))>0;
GET_CHINESE(NAME)
---------------------------------------------------------------------------
啊哈
你好
大家好
大海
4 rows selected.
需要说明的是GB2312共有6763个汉字,即7294-5=6763
我这里是计算7294,没有减去那5个,那五个是空的。等查到了再减去
============
改写这个函数,可以提取非汉字或者汉字
该函数有两个参数,个表示要提取的字符串,第二个是1,表示提取汉字,是非1,表示提取非汉字
[PHP]
create or replace function get_chinese
(p_name in varchar2,
p_chinese in varchar2
) return varchar2
v_code varchar2(30000) := '';
v_chinese varchar2(4000) := '';
v_non_chinese varchar2(4000) := '';
v_comma pls_integer;
v_code_q pls_integer;
v_code_w pls_integer;
begin
if p_name is not null then
select replace(substrb(dump(p_name,1010),instrb(dump(p_name,1010),'ZHS16GBK:')),'ZHS16GBK: ','') into v_code from dual where rownum=1;
for i in 1..length(p_name) loop
if lengthb(substr(p_name,i,1))=2 then
v_comma := instrb(v_code,',');
v_code_q := to_number(substrb(v_code,1,v_comma-1));
v_code_w := to_number(substrb(v_code,v_comma+1,abs(instrb(v_code,',',1,2)-v_comma-1)));
if v_code_q>=176 and v_code_q<=247 and v_code_w>=161 and v_code_w<=254 then
v_chinese := v_chinese||substr(p_name,i,1);
else
v_non_chinese := v_non_chinese||substr(p_name,i,1);
end if;
v_code := ltrim(v_code,'1234567890');
else
v_non_chinese := v_non_chinese||substr(p_name,i,1);
end if;
v_code := ltrim(v_code,'1234567890');
end loop;
if p_chinese = '1' then
return v_chinese;
else
return v_non_chinese;
end if;
else
return '';
end if;
end;
/.
[/PHP]
SQL> select from a;
NAME
--------------------
他(艾呀)是★们
他的啊@
SQL> select get_chinese(name,1) from a;
GET_CHINESE(NAME,1)
-----------------------------------------
我们啊
他艾呀是们
他的啊
SQL> select get_chinese(name,0) from a;
GET_CHINESE(NAME,0)
-----------------------------------------
、()★
@
SQL>
汉字属于什么字符类型
可以执行读取、存储、写入等特殊作。问题一:在数据库中,汉字属于什么字符类型 如果名字都用汉字就使用nvarchar 如果包括英文就varchar
具体区别打开sqlserver f1 输入数据类型看看
问题二:ja中汉字是String类型的么? 字符串里的字符不管哪国文字。在ja中内码一概以unicode编码。
哪有什么强制型转换的问题啊。
类型转换的前提是数据类型不一致。
String就是String。哪还需要转换呢?
问题三:什么是字符型 选符型 字符型都要用引号 例如: 123 姓名abc之类的都是 数值型就是1234之类的这些数 逻辑型分为逻辑真和逻辑 日期型就是[^09-01-02]这样表示时间的
问题四:汉子是什么类型的文字,依据是什么 1.从汉字记录的语言结合系统中的单位看,汉字是语素文字.
根据一种语言的文字符号所记录的语言结构系统中的单位来看,记录语素的是语素文字,记录音节的是音节文字,记录音素的是音素文字.汉字记录的是汉语里的什么单位呢?汉字主要记录汉语里的语素.例如“学习”这个词,写下来是两个字,这两个字代表了汉语里两个最小的音义结合体,即语素.由于汉字记录语素,代表语素,汉字也就有了所谓“字义”,显然,这字义是语素义.汉字代表语素是汉字区别于表音文字――音节文字、音素文字的一个重要特点.表音文字所记录的不是语素,而是纯粹的语音单位.例如记录英语的拉丁字母,除有形有音外,它不表义,它只代表音素,作为记录英语的文字符号,它仅仅是表示一定语音的字母.
汉字也记录少量非语素的音节,如“葡”“萄”“枇”“杷”等.这些音只有pú táo pí pā等语音,而不表义.但汉字所记的这类音节,并不同于音节文字中的文字符号.因为音节文字中的文字符号是专门用来记录语言中的音节的,如日文的名“夕”是记录音节的,而汉语中的这类音节仅仅是某个多音节语素中的具体音节,它们只有处在“葡萄”“枇杷”等多音节语素中,才具有代表音节的作用,否则就失去了存在的价值,而且字形上往往还有标义的成分,如“葡萄”二字所从的“艹”,“枇杷”二字所从的“木”,标志着“葡萄”“枇杷”的种概念范畴,这种情况是音节文字不可能有的.
从汉字跟汉语的关系看,汉字是语素文字.
2.从汉字所用的文字符号本身的性质看,汉字主要是由意符和音符组成的文字系统.
文字所使用的符号大致可分为三类,即意符、音符、记号.跟文字所代表的语素在意义上有联系的字符是意符,只在语音上有联系的字符是音符,在语音和意义上都没有联系的是记号.表音文字只使用音符,汉字则三类符号都使用.汉字里的象形字、指事字、会意字以及形声字中的形旁属于意符,因为它们跟它们所代表的语素在意义上有直接联系.汉字里的音符指形声字中的声旁.虽然汉字和表音文字都使用音符,但汉字的音符同表音文字的音符有很大区别.表音文字的音符是专职的,汉字的音符是借现成汉字充当的,属借音符性质.在汉字发展的过程中,象形字大多变得不象形了.
问题五:字母是什么类型的数据类型? char类型
问题六:什么是字符型变量 字符型变量是用来保存单字符的一种变量:如:char a='a'; 而字符串就是用来保佑多个字符的变量,C语言中用字符数组来表式一个字符串 如:char name[]={abcdefghikllllll}。字符和字符串的区别在于是用双引号,还是单引号,双引号表字符串,单引号表字符,如:a和'a' 个是字符串,而第二个是字符。
问题七:oracle几种字符类型总结 一 varchar,nvarchar,
四个类型都属于变长字符类型, varchar和varchar2的区别在与后者把所有字符都占两字节,前者只对汉字和全角等字符占两字节。 nvarchar和nvarchar2的区别和上面一样, 与上面区别在于是根据Unicode 标准所进行的定义的类型,通常用于支持多国语言类似系统的定义。
1.char
char的长度是固定的,比如说,你定义了char(20),即使你你插入abc,不足二十个字节,数据库也会在abc后面自动加上17个空格,以补足二十个字节;
char是区分中英文的,中文在我们啊、char中占两个字节,而英文占一个,所以char(20)你只能存20个字母或10个汉字。
char适用于长度比较固定的,一般不含中文的情况
2.varchar/varchar2
varchar是长度不固定的,比如说,你定义了varchar(20),当你插入abc,则在数据库中只占3个字节。
varchar同样区分中英文,这点同char。
varchar2基本上等同于varchar,它是oracle自己定义的一个非工业标准varchar,不同在于,varchar2用null代替varchar的空字符串
varchar/varchar2适用于长度不固定的,一般不含中文的情况
3.nvarchar/nvarchar2
nvarchar和nvarchar2是长度不固定的
nvarchar2基本上等同于nvarchar,不同在于nvarchar2中存的英文字母也占两个字节
nvarchar/nvarchar2适用于存放中文
char [ ( n ) ]
固定长度,非 Unicode 字符数据,长度为 n 个字节。n 的取值范围为 1 至 8,000,存储大小是 n 个字节。
varchar [ ( n | max ) ]
如果列数据项的大小一致,则使用 char。
如果列数据项的大小异相当大,则使用 varchar。
如果列数据项大小相很大,而且大小可能超过 8,000 字节,请使用 varchar(max)。
如果未在数据定义或变量声明语句中char 或 varchar 数据类型指定 n,则默认长度为 1。如果在使用 CAST 和 CONVERT 函数时char 或 varchar 数据类型未指定 n,则默认长度为 30。
当执行 CREATE TABLE 或 ALTER TABLE 时,如果 SET ANSI_PADDING 为 OFF,则定义为 NULL 的 char 列将作为 varchar 处理。
另外帮助理解的,只供参考:转自51testing/...141197
也可参......>>
问题八:mysql中汉字甚至什么数据类型合适? 10分 这些都是真实的数据库
访问桌面数据库,这是一个小型的数据库,主要用于办公使用一个免费的,开源的MySQL 属于中型数据库
DB2数据库也是一个中型数据库
Oracle是一个庞大的数据库
除了访问,到MySQL,DB2,Oracle可以实现跨平台。
微软的数据库是不是跨平台,包括SQL 2000中和SQL 2005中
问题九:怎么对一个字符串一个一个字符的进行判断是什么类型的字符 循环读取每一个字符,再进行条件判断,分为大写英文字母、小写字母、数字、其他字符,分别输出upper letter、lower letter、digit、other character。把源程序一下
#include#include#includeint main(){char ch[100];int i;int length;printf(please input a string:n);scanf(%s,ch);length=strlen(ch);printf(the length is %dn,length);for(i=0;i='A'){printf(the %d character is upper lettern,i+1);}else{if(ch[i]='a'){printf(the %d character is lower lettern,i+1);}else{if(ch[i]='0'){printf(the %d character is digitn,i+1);}else{printf(the %d character is other charactern,i+1);}}}}return 0;}运行结果,如果有什么不明白的还可以问我
问题十:汉字字符 的标准码数值范围是多少?就是例如 char '我' 按照%d 形式输出的值 所有汉字这 汉字字符 的标准码数值范围是多少?
汉字内码,是两个字节。
char,这才一个字节。只能存放半个汉字。
varchar和varchar2的区别
Beginvarchar和varchar2的区别是什么呢?发现不少人对这个问题感兴趣,今天我们就来看看他们的区别吧。
ROWID 数据表中记录的行号 10 bytes ..格式,为0或1varchar是标准sql里的,varchar2是oracle所提供的的数据类型。
varchar对于汉字占两个字节,对于数字,英文字符是一个字节,占的内存小,varchar2一般情况下把所有字符都占两字节处理。具体要看数据库使用的字符集,比如GBK,汉字就会占两个字节,英文1个,如果是UTF-8,汉字一般占3个字节,英文还是1个。
看完这篇文章,有没有解答你心中的疑惑呢?
声明:本站所有文章资源内容,如无特殊说明或标注,均为采集网络资源。如若本站内容侵犯了原著者的合法权益,可联系 836084111@qq.com 删除。