java和oracle

1、字符

java的String是按照字符长度计算;
oracle的varchar2类型是按照字节(byte)长度计算。

String str = "中文123";
// 获取字符长度
System.out.println(str.length());
// 获取字节长度,要与oracle中的varchar2编码格式一致,长度才一致。
//(编码格式有 UTF-8 GB2312 GBK UTF-16 UTF-32)
System.out.println(str.getBytes("GBK").length);
-- 字符长度
select length('中文123') from dual;
select lengthc('中文123') from dual;
-- 字节长度
select lengthb('中文123') from dual;
-- substr函数为字符,substrb为字节,substrc为UNICODE完全字符集,substr2为UCS2编码代码点,substr4为ucs4编码代码点
- 按字符截取
select substr('我爱中国',1,3) from DUAL;
-- 按字节截取
select substrb('我爱中国',1,3) from DUAL;
int len = 2;//字节长度
String str = "质量抽检专管";
System.out.println(str.length());
System.out.println(str.getBytes("GBK").length);

if(str.getBytes("GBK").length<=len){
    System.out.println(str);
}else {
    for (int i=len;i>=0;i--){
        String substring = str.substring(0, i);
        if (substring.getBytes("GBK").length <=len){
           System.out.println(substring);
           break;
       }
    }
}

和java对应的数据类型

数据对应时,会减少oracle隐形数据转换,减少cpu压力
oracle数据类型和对应的java类型

SQL数据类型JDBC类型代码标准的Java类型Oracle扩展的Java类型
1.0标准的JDBC类型:
CHARjava.sql.Types.CHARjava.lang.Stringoracle.sql.CHAR
VARCHAR2java.sql.Types.VARCHARjava.lang.Stringoracle.sql.CHAR
LONGjava.sql.Types.LONGVARCHARjava.lang.Stringoracle.sql.CHAR
NUMBERjava.sql.Types.NUMERICjava.math.BigDecimaloracle.sql.NUMBER
NUMBERjava.sql.Types.DECIMALjava.math.BigDecimaloracle.sql.NUMBER
NUMBERjava.sql.Types.BITbooleanoracle.sql.NUMBER
NUMBERjava.sql.Types.TINYINTbyteoracle.sql.NUMBER
NUMBERjava.sql.Types.SMALLINTshortoracle.sql.NUMBER
NUMBERjava.sql.Types.INTEGERintoracle.sql.NUMBER
NUMBERjava.sql.Types.BIGINTlongoracle.sql.NUMBER
NUMBERjava.sql.Types.REALfloatoracle.sql.NUMBER
NUMBERjava.sql.Types.FLOATdoubleoracle.sql.NUMBER
NUMBERjava.sql.Types.DOUBLEdoubleoracle.sql.NUMBER
RAWjava.sql.Types.BINARYbyte[]oracle.sql.RAW
RAWjava.sql.Types.VARBINARYbyte[]oracle.sql.RAW
LONGRAWjava.sql.Types.LONGVARBINARYbyte[]oracle.sql.RAW
DATEjava.sql.Types.DATEjava.sql.Dateoracle.sql.DATE
DATEjava.sql.Types.TIMEjava.sql.Timeoracle.sql.DATE
TIMESTAMPjava.sql.Types.TIMESTAMPjaval.sql.Timestamporacle.sql.TIMESTAMP
2.0标准的JDBC类型:
BLOBjava.sql.Types.BLOBjava.sql.Bloboracle.sql.BLOB
CLOBjava.sql.Types.CLOBjava.sql.Cloboracle.sql.CLOB
用户定义的对象java.sql.Types.STRUCTjava.sql.Structoracle.sql.STRUCT
用户定义的参考java.sql.Types.REFjava.sql.Reforacle.sql.REF
用户定义的集合java.sql.Types.ARRAYjava.sql.Arrayoracle.sql.ARRAY
Oracle扩展:
BFILEoracle.jdbc.OracleTypes.BFILEN/Aoracle.sql.BFILE
ROWIDoracle.jdbc.OracleTypes.ROWIDN/Aoracle.sql.ROWID
REF CURSORoracle.jdbc.OracleTypes.CURSORjava.sql.ResultSetoracle.jdbc.OracleResultSet
TIMESTAMPoracle.jdbc.OracleTypes.TIMESTAMPjava.sql.Timestamporacle.sql.TIMESTAMP
TIMESTAMP WITH TIME ZONEoracle.jdbc.OracleTypes.TIMESTAMPTZjava.sql.Timestamporacle.sql.TIMESTAMPTZ
TIMESTAMP WITH LOCAL TIME ZONEoracle.jdbc.OracleTypes.TIMESTAMPLTZjava.sql.Timestamporacle.sql.TIMESTAMPLTZ
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值