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,也就是只能存放十个汉字。