oracle字符数怎么算 oracle计算字符串的长度

oracle 如何计算中英文混合字符串占用的字节

oracle中varchar2类型或者是clob类型中包含中文及英文字符,现在要统计中文字符(按2个字节计算),英文字符(按一个字符计算)。

成都创新互联公司-专业网站定制、快速模板网站建设、高性价比武江网站开发、企业建站全套包干低至880元,成熟完善的模板库,直接使用。一站式武江网站制作公司更省心,省钱,快速模板网站建设找我们,业务覆盖武江地区。费用合理售后完善,10年实体公司更值得信赖。

问题解决方案:

oracle目前我了解的好像没有直接的函数可以使用(不才^_^),但提供两个可以统计字符的函数,length()和lengthb()。

下面的例子可以说明两个函数的区别:

select length('中华12') from dual --返回4,也就是占用4个字符

select lengthb('中华12') from dual --返回8,也就是占用8个字节,其中中华儿子各占3个字节,而12两个字符各占一个字节

可以看出lengthb()确实是计算中英文字符总的占用的字节,但是中文字符按3个字节计算,而我要得到的是2个字节。

于是混合使用这两个函数就可以计算出我要的字节数:

length(t_conutclob)+(lengthb(t_conutclob)-length(t_conutclob))/2

oracle中字符串统计的函数

统计总数的函数:count();筛选特定字符的方法是:like。

sql:select

count(*)

from

tablename

where

name

like

'%特定字符%'。

上面语句的意思就是:筛选出表字段内容中带有“特定字符”行数的总数。

ORACLE中一个字符占多少字节

22.1 问题描述 22.2 解决方案 在oracle中一个字符特别是中文占几个字节是不同的。 比如我创立一个表create table test_ly(a varchar2(4),b nvarchar2(4)) 错!最多能插入一个汉字加一个字母(或数字)。 错!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字符数怎么算 oracle计算字符串的长度
网站网址:http://scyanting.com/article/hpepcd.html