length,lengthb和substr,subtrab

length表示的是字符串的字符长度,lengthb表示的是字符串的字节长度;

substr表示根据字符长度获取子串,substrb表示根据字节长度获取字符串。

SELECT LENGTH('length,lengthb测试') FROM dual;--字符数

 

SELECT LENGTHB('length,lengthb测试') FROM dual; --字节数

 

SELECT SUBSTR('测试length,lengthb测试',1,5) FROM dual;

 

SELECT SUBSTRB('测试length,lengthb测试',1,5) FROM dual;


esle1:

一个中文汉字占用几个字节,由oracle服务器端字符集编码决定

select userenv('language') from dual;

SIMPLIFIED CHINESE_CHINA.ZHS16GBK --个汉字占两个字节

SIMPLIFIED CHINESE_CHINA.AL32UTF8 一个汉字占三个字节

也可以select lengthb('你') from dual来查询。

else2:

oracle中定义字符类型的时候默认长度是bytes,比如varchar(20)表示的是20个字节长度,
如果是在 ZHS16GBK,也就是只能存放十个汉字。


你可能感兴趣的:(length,lengthb和substr,subtrab)