在oracle中一个字符特别是中文占几个字节是不同的。
比如我创立一个表create table test_ly(a varchar2(4),b nvarchar2(4))
错!最多能插入一个汉字加一个字母(或数字)。
你说b列最多能插入多少个汉字,2个?
不以N开头的字段类型(比如CHAR,VARCHAR2)中,unicode字符(比如汉字)占3个字节,其他字符占1个字节。
如何求一个字符串占用的字符数和字节数?
你说 中华12 这个字符串占用了多少字符,字节?看sql返回值便清楚了。
select lengthb('中华12') from dual --返回8,也就是占用8个字节,其中中华儿子各占3个字节,而12两个字符各占一个字节
select length(N'中华1') from dual --返回3,因为只有3个字符嘛。
字符串类型字段默认的长度是以字节为单位的,具体取决于参数
nls_length_semantics 的值(使用show
parameters可以看到这个参数的值),默认是BYTE,也就是以字节为单位的,如果是CHAR则是以字符为单位的。表的某列可以使用字符为单位
吗?当然可以,比如这样创建即可:create table test_ly(a varchar2(4 char))
这样a列就最多能保存4个字符,而不是4个字节了。
发表评论
-
Oracle关于时间/日期的操作
2012-04-09 23:12 8241.日期时间间隔操作 当前时间减去7分钟的时间 s ... -
oracle 数据库增量备份
2012-03-16 20:03 1109EXP和IMP是Oracle提供的一种逻辑备份工具。逻辑备份创 ... -
oracle start with connect by 用法
2012-02-19 23:58 980oracle 提供了start with connect by ... -
Oracle数据导入导出imp/exp
2012-02-09 17:38 583Oracle数据导入导出imp/exp 功能:Oracle数 ... -
性能监控SQL语句
2011-12-23 13:51 793分析表 analyze table tablename co ... -
常用SQL语句
2011-12-23 13:50 941查找数据库中所有字段 以对应的表 select C.colu ... -
安装到最后的两个脚本作用
2011-12-06 18:32 1006在linux下安装Oralce的时候,最后会让你以root的身 ... -
提高SQL效率
2011-12-01 00:13 990下面就某些SQL 语句的 where 子句编写中需要注意 ... -
“exists”和“in”的效率问题
2011-11-30 23:49 978有两个简单例子,以说明 “exists”和“in”的效率问题 ... -
Oracle建立全文索引详解
2011-11-30 20:42 14431.全文检索和普通检索的区别 不使用Oracle text功 ... -
全文检索CLOB
2011-11-30 12:00 953建议使用全文检索(FULL TEXT SEARCH) ... -
“Oracle”数据库的“周数计算”
2011-11-16 13:25 943——日期计算,算第n周的第一天及最后一天是几号。 by key ... -
Oracle中TO_DATE格式
2011-11-16 13:17 797TO_DATE格式(以时间:2007-11-02 13:4 ... -
Oracle 索引 详解
2011-11-15 13:00 25991Oracle 索引 详解 ... -
Oracle SQL中的IN 和 EXSITS区别总结
2011-11-15 11:06 972IN 确定给定的值是否与子查询或列表中的值相匹配。 EX ... -
Oracle 字符集的查看和修改
2011-11-14 23:09 899一、什么是Oracle字符集 ... -
Oracle Flashback技术总结
2011-11-14 01:06 931Flashback 技术是以Undo segment中的内容为 ... -
oracle日志归档模式改变
2011-11-14 00:15 1061在Oracle数据库中,主要 ... -
如何最大程度的 把表空间里面的数据给抢救出来
2011-11-03 16:18 1221今天一朋友问到一个比较有意识的问题: 如果一个表空间,其中一个 ... -
oracle 性能优化建议小结
2011-10-24 23:45 414原则一:注意WHERE子句 ...
相关推荐
首先我想到的是采用检测每个字节ASCII的方式,这样的话需要写一个自定义函数,然后SQL中调用得到结果。但是感觉这个方法估计很耗时,毕竟每个字符都要比较,所以没有去实现。突然想到Oracle有一个编码转换的函数叫...
首先我想到的是采用检测每个字节ASCII的方式,这样的话需要写一个自定义函数,然后SQL中调用得到结果。但是感觉这个方法估计很耗时,毕竟每个字符都要比较,所以没有去实现。突然想到Oracle有一个编码转换的函数叫...
由于历史的原因,早期的oracle没有中文字符集(如oracle6、oracle7、oracle7.1),但有的用户从那时起就使用数据库了, 并用US7ASCII字符集存储了中文,或是有的用户在创建数据库时,不考虑清楚,随意选择一个默认的...
Oracle接收长度大于4000的字符串 Oracle接收长度大于4000的字符串
oracle中的substr是针对字节进行截取,当处理对中文汉字时,非常不方便,通过对其封装,可以实现对字符进行截取。
一个汉字在Oracle数据库里占多少字节跟数据库的字符集有关,UTF8时,长度为三。 select lengthb(‘飘’) from dual 可查询汉字在Oracle数据库里占多少字节 以上就是本文关于Oracle求字符串长度函数le
lengthb(string)计算string所占的字节长度:返回字符串的长度,单位是字节 ...【备注】一个汉字在Oracle数据库里占多少字节跟数据库的字符集有关,UTF8时,长度为三 PS:oracle去掉字符串中所有指定字符 Selec
在运行查询SELECT * FROM V$SESSION 会出现ORA-29275:部分多字节字符的错误,这是什么原因开始我不得其解,网上也没有介绍什么好办法。本文给出答案。
在Export过程中,如果源数据库字符集与Export用户会话字符集不一致,会发生字符集转换,并在导出的二进制格式Dmp文件的头部几个字节中存储Export用户会话字符集的ID号。在这个转换过程中可能发生数据的丢失。 正确...
--把最左边的字符去掉,使其第一个字符不在其中 select ltrim('Mississippi','Mis') from dual; select ltrim('Mississippi','miD') from dual; --RPAD右侧用字符串补足到一定长度 select RPAD('DFSDf.................
一、什么是Oracle字符集Oracle字符集是一个字节数据的解释的符号集合,有大小之分,有相互的包容关系。ORACLE 支持国家语言的体系结构允许你使用本地化语言来存储,处理,检索数据。它使数据库工具,错误消息,排序...
我们很有可能会遇到需要插入大型数据的情况,例如,在oracle中需要插入字节数超过4000的字段内容时,我们如果通过简单的拼组sql语句来实现插入,显然就会出现问题,而在sql server中却没有这个限制,个人尝试了26w个...
3、NCHAR和nvarchar2,NCHAR和CHAR区别在于NCHAR用来存储Unicode字符集类型,即双字节字符数据,CHAR是一个字节,而NCAHR是一个字符(两个字节),前者是CHAR(1)无法插入‘的’,后者是NCHAR(1)可以插入‘的’ ...
用SQL语句截取字符串, string substr ( string string, int start [, int length]) 参数1:处理字符串 参数2:截取的起始位置(第一个字符是从0开始) 参数3:截取的字符数量
需要注意的是, 使用此方法会破坏数据库中的原有双字节字符. 一种办法是先将数据库导出, 修改完字符集后再导入; 另一种办法就是不管他, 就那样使用. 一般如果是一个测试环境, 像方法二那样就可以了, 但是可能某些表...
Oracle字符集是一个字节数据的解释的符号集合,有大小之分,有相互的包容联系。ORACLE 支撑国家语言的体系结构允许你运用本地化语言来存储,处理,检索数据。它使数据库工具,不正确消息,排序次序,日期,时间,货币...
一、什么是Oracle字符集 Oracle字符集是一个字节数据的解释的符号集合,有大小之分,有相互的包容关系。ORACLE 支持国家语言的体系结构允许你使用本地化语言来存储,处理,检索数据。它使数据库工具,错误消息,排序...
说明:Oracle中要删除一个用户,必须要具有dba的权限。而且不能删除当前用户,如果删除的用户有数据对象,那么必须加上关键字cascade。 用法:drop user 用户名 [cascade] 四、 用户权限与角色 1. 权限 Oracle中权限...
今天在项目中向数据库的CLOB属性插入一段篇文章(1000~2000)字就会报一个字符串过长的错误。 网上说用流来处理,没有这么做。这像是一个Bug,只要把插入的数据,默认扩充到2000以上就ok了。 下面是这段代码: if(...
DATE用于存储全部日期的固定长度(7个字节)字符域,时间作为日期的一部分存储其中。除非 通过设置init.ora文件的NLS_DATE_FORMAT参数来取代日期格式,否则查询时,日期以 DD-MON-YY格式表示,如13-APR-99表示1999.4...