日期:2014-05-16  浏览次数:20742 次

求教一条SQL
比如oracle中有一个表(X_TM_CONFIG)有字段CONFIG_ID NUMBER,CONFIG_VALUE CLOB--这个字段以前在4000范围内通过to_char(CONFIG_VALUE)转化为字符串好控制,现在维护有可能远远超过4000的长度,现在的要求就是把这个字段截取分段显示出来,以3500为长度分段截取
比如显示结果:
CONFIG_ID CONFIG_VALUE CONFIG_VALUE1 CONFIG_VALUE1  
1 xmlfeifdkafdifdafkaffifd(3500内)
2 iddiiiiiiiiiiiiiiiiiiiiii(3500外7000内) aaaaa
3 iddiiiiiiiiiiiiiiiiiiiiii(3500外7000外) daaaaafdfdfdafa fdfdffdf
............................
 

------解决方案--------------------
substr(CONFIG_VALUE CLOB, 1, 3500), substr(CONFIG_VALUE CLOB,3501, 3500)
分段截取下不就行了?
------解决方案--------------------
写存储过程吧
大致是这样的,楼主参考下

select ceil(max(length(t.congif_value))/3500) from X_TM_CONFIG;
--CONFIG_VALUE可拆分的最大列数
SQL code

……
type value_type is table of number 
index by pls_integer;
v_value value_type;
begin

for i in 1 .. n loop
select substr(t.congif_value,(n-1)*3500+1,3500) into v_value(n) from X_TM_CONFIG;
end ;
……

------解决方案--------------------
支持上楼
------解决方案--------------------
可以使用substr对clob数据进行操作。
截取子串罢。