包含clob字段的数据入库sql怎么写

针对oracle数据库,在我们后台需要入库clob字段类型时,sql应该怎么写呢?

最近遇到这个问题,于是了解了下并作记录(以表test为例,含有id-number,name-vachar2,content-clob三个类型字段):

1、当确认clob字段的数据长度不超过oracle中字符串最大长度限制,则可以直接使用单引号和字符串一样入库,即

insert into test (id,name,content)values(1,'name1','xxxxx');

2、一般情况下,clob用于存储大段文字或其他字符数据,其长度是超过oracle字符串最大长度限制的,此时不能再简单用单引号入库,应该使用oracle内置方法to_clob()。先将需要存入的数据转化一下结构:

public class GetClobStr {

      /**
     * @Author Administrator
     * @Description 将字符串根据特定长度分割成字符串数组并拼接成正确格式
     * 格式  to_clob('xx')||to_clob('xx')||...
     * @Param @param s 
     * @Param @param len 每个clob串的字符长度
     * @Param @return(参数)
     * @Return String
     */
    public static String stringSpilt(String s,int len){
        StringBuffer sb=new StringBuffer();
        int spiltNum=(s.length())/len;
        if(spiltNum==0){
            sb.append("to_clob('"+s+"')");
        }else {
            for(int i=0;i<s.length();i+=len){
                if((i+len)>=s.length()){
                    sb.append("to_clob('"+s.substring(i, s.length())+"')");
                }else{
                    sb.append("to_clob('"+s.substring(i, i+len)+"')||");
                }
            }
        }
        return sb.toString();
    }

}

此时sql可以这样写:

StringBuffer sb=new StringBuffer().append("insert into test(id,name,content) values (2,'name2',")
                                          .append(GetClobStr.stringSpilt(源字符串,len))
                                          .append(");");

(len根据自己需求分配每个to_clob()串的字符长度)

       

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值