ORACLE中一个字符占多少字节?
问题描述
或许你会说一个中文字符占2个字节,这是一定的?如何计算一个字符串的字节数?
解决方案
在oracle中一个字符特别是中文占几个字节是不同的。
比如我创立一个表create table test_ly(a varchar2(4),b nvarchar2(4))
你说a列能插入两个汉字吗?
错!最多能插入一个汉字加一个字母(或数字)。
这是为什么?因为一个汉字在a字段中占了3个字节,其他字符(比如数字或者字母或者英文标点符号)占1个字节,
你说b列最多能插入多少个汉字,2个?
错!b列最多能插入4个汉字,b列的一个汉字或者其他字符(比如数字或者字母或者英文标点符号)占2个字节。
由此可见,N开头的字段类型(比如NCHAR,NVARCHAR2)中,任何一个字符(包括一个汉字)占2个字节,统一的。
不以N开头的字段类型(比如CHAR,VARCHAR2)中,unicode字符(比如汉字)占3个字节,其他字符占1个字节。
如何求一个字符串占用的字符数和字节数?
Length 函数求得是占用字符数,lengthb或者vsize函数求得是占用字节数。
你说 中华12 这个字符串占用了多少字符,字节?看sql返回值便清楚了。
select length('中华12') from dual --返回4,也就是占用4个字符
select lengthb('中华12') from dual --返回8,也就是占用8个字节,其中中华儿子各占3个字节,而12两个字符各占一个字节
select lengthb(N'中华1') from dual --返回6,这是将字符串转换成为unicode字符串后,每个字符占用2个字节,3个就是6个字节
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中一个字符占多少字节?的更多相关文章
- Java 语言中一个字符占几个字节?
Java中理论说是一个字符(汉字 字母)占用两个字节. 但是在UTF-8的时候 new String("字").getBytes().length 返回的是3 表示3个字节 作者: ...
- utf-8的中文,一个字符占几个字节
https://blog.csdn.net/kindsuper_liu/article/details/80202150 英文字母和中文汉字在不同字符集编码下的字节数英文字母:·字节数 : 1;编码: ...
- utf-8的中文是一个字符占几个字节
utf-8的中文是一个字符占几个字节 英文字母和中文汉字在不同字符集编码下的字节数英文字母:·字节数 : 1;编码:GB2312 字节数 : 1;编码:GBK 字节数 : 1;编码:GB18030 字 ...
- oracle中一个字符串包含另一个字符串中的所有字符
oracle中一个字符串包含另一个字符串中的所有字符 --解决监理报告中所勾选的标段信息,与该用户所管理的标段字符串不匹配的问题. select * from a where instr(a,b)&g ...
- C语言中一个字符对应一个ascii码;占一个1个字节8个二进制位;存到内存中也是用ascii的十进制的二进制表示
/** 只读变量和常量 const 只读 const int a; int const a;//同上面的代码行是等价的,都表示一个常整形数. int *const a;//const具有"左 ...
- oracle 插入数据之坑--------oracle字符类型varchar2一个中文占多少字节
如果你误认为是两个字节,那就大错特错了 Oracle 一个中文汉字 占用几个字节,要根据Oracle中字符集编码决定 查看oracle server端字符集 select userenv('langu ...
- mysql和oracle的一个汉字占几个字符
以前一直使用oracle11g,一个汉字占3个字节,所以在操作mysql时也一直这样分配长度. 今天测试了下发现不对了 可以看到第一个的长度确实是15,但是第二个为什么是5? 在网上找到资料:char ...
- php中一个字符占用几个字节?
先看看字符与字节有什么区别: (一)“字节”的定义 字节(Byte)是一种计量单位,表示数据量多少,它是计算机信息技术用于计量存储容量的一种计量单位. (二)“字符”的定义 字符是指计算机中使用的文字 ...
- Oracle中的字符处理方法
向左补全字符串 lpad(字段名,填充长度,填充的字符) ,') from dual; 向右补全字符串 rpad(字段名,填充长度,填充的字符) ,') from dual; 返回字符串小写 sele ...
随机推荐
- windows cmd下创建虚拟环境virtualenv
一:虚拟环境virtualenv 如果在一台电脑上, 想开发多个不同的项目, 需要用到同一个包的不同版本, 如果使用上面的命令, 在同一个目录下安装或者更新, 新版本会覆盖以前的版本, 其它的项目就无 ...
- P2048 [NOI2010]超级钢琴
传送门 考虑维护前缀和 $sum[i]$ 那么对于每一个位置 $i$ ,左端点为 $i$ 右端点在 $[i+L-1,i+R-1]$ 区间的区间最大值容易维护 维护三元组 $(o,l,r)$ ,表示左端 ...
- Oracle 11g 新特性 --SQL Plan Management 说明
Oracle 11g 新特性 --SQL Plan Management 说明 参见大神博主文章: http://blog.csdn.net/tianlesoftware/article/detail ...
- 【研究】Discuz<3.4任意文件删除漏洞
这里以Discuz3.2为例 关键字:Powered by Discuz! X3.2 时间有限,就不一一截图了,Discuz所有页面全在Discuz_X3.2_SC_UTF8/upload/目录下 利 ...
- 1.2 js基础
1.onchange 99%用到select上边. 2.js是干什么的,修改css样式和属性 3.选项卡步骤 1.获取元素 2.循环给按钮加自定义属性 3.循环给按钮加事件 4.封装 ...
- Redis启动和关闭
带配置文件启动 ./redis-server redis.conf 关闭 无密码模式 ./redis-cli -h xxx -p xxx shutdown 密码模式 ./redis-cli -h ...
- struts 2 报错Could not find action or resul 常见错误原因分析
1.struts.xml配置的action与我们访问的action或返回的result确实没有匹配导致.这个时候要仔细检查Struts.xml配置文件: 2.我们的action输入正确,返回结果经过无 ...
- jQuery中的DOM操作——《锋利的JQuery》
jQuery封装了大量DOM操作的API,极大提高了操作DOM节点的效率. 1.查找节点 通过我们上一节介绍了JQuery选择器,可以非常轻松地查找节点元素.不过,这时得到的是jQuery对象,只能使 ...
- 微信小程序开发踩坑记录
1.由于小程序wx.request()方法是异步的,在app.js执行ajax后,各分页加载app.js的全局数据时,无法按顺序加载.例: //app.js App({ ajax:function() ...
- [转]<加密算法c#>——— 3DES加密之ECB模式 和 CBC模式
本文转自:http://www.cnblogs.com/qq278360339/archive/2013/06/05/3119222.html 最近 一个项目.net 要调用JAVA的WEB SERV ...