包含clob字段的数据入库sql怎么写
針對(duì)oracle數(shù)據(jù)庫(kù),在我們后臺(tái)需要入庫(kù)clob字段類(lèi)型時(shí),sql應(yīng)該怎么寫(xiě)呢?
最近遇到這個(gè)問(wèn)題,于是了解了下并作記錄(以表test為例,含有id-number,name-vachar2,content-clob三個(gè)類(lèi)型字段):
1、當(dāng)確認(rèn)clob字段的數(shù)據(jù)長(zhǎng)度不超過(guò)oracle中字符串最大長(zhǎng)度限制,則可以直接使用單引號(hào)和字符串一樣入庫(kù),即
insert into test (id,name,content)values(1,'name1','xxxxx');
2、一般情況下,clob用于存儲(chǔ)大段文字或其他字符數(shù)據(jù),其長(zhǎng)度是超過(guò)oracle字符串最大長(zhǎng)度限制的,此時(shí)不能再簡(jiǎn)單用單引號(hào)入庫(kù),應(yīng)該使用oracle內(nèi)置方法to_clob()。先將需要存入的數(shù)據(jù)轉(zhuǎn)化一下結(jié)構(gòu):
public class GetClobStr {
? ? ??/**
 ?? ? * @Author Administrator
 ?? ? * @Description 將字符串根據(jù)特定長(zhǎng)度分割成字符串?dāng)?shù)組并拼接成正確格式
 ?? ? * 格式 ?to_clob('xx')||to_clob('xx')||...
 ?? ? * @Param @param s?
 ?? ? * @Param @param len 每個(gè)clob串的字符長(zhǎng)度
 ?? ? * @Param @return(參數(shù))
 ?? ? * @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();
 ?? ?}
}
此時(shí)sql可以這樣寫(xiě):
StringBuffer sb=new StringBuffer().append("insert into test(id,name,content) values (2,'name2',")
 ?? ??? ??? ??? ??? ??? ??? ??? ??? ??? ? ?.append(GetClobStr.stringSpilt(源字符串,len))
 ?? ??? ??? ??? ??? ??? ??? ??? ??? ??? ? ?.append(");");
(len根據(jù)自己需求分配每個(gè)to_clob()串的字符長(zhǎng)度)
? ? ? ?
總結(jié)
以上是生活随笔為你收集整理的包含clob字段的数据入库sql怎么写的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
 
                            
                        - 上一篇: 基于SSM+JSP+MYSQL+H-UI
- 下一篇: java-php-python-ssm芮
