准备数据
create table properties(c_key varchar(300),c_value varchar(300),c_re varchar(300));
insert into properties values('path.share.staticAppendence','"$path.share"/static_appendence.jsp','');
insert into properties values('path.share','"$test"/WEB-INF/share','');
insert into properties values('test','111','');
select b.c_key,b.c_value,b.c_re,decode(prior v1,null,c_value,replace(to_char(prior v1),'"$'||c_key||'"',c_value)) v1,prior v1 from (select a.*,c_value v1 from properties a) b start with c_key='path.share.staticAppendence' connect by instr(prior c_value,'"$'||c_key||'"')<>0
我本来想通过这样一条递归句子,将c_value列进行参数化处理的,格式是将"$c_key"替换为表中包含的c_key对应的值
本以为将新的值插入到旧的列中,就能替换掉旧的值,没想到我想错了,使用的还是旧的值
1 path.share.staticAppendence "$path.share"/static_appendence.jsp "$path.share"/static_appendence.jsp
2 path.share "$test"/WEB-INF/share "$test"/WEB-INF/share/static_appendence.jsp "$path.share"/static_appendence.jsp
3 test 111 111/WEB-INF/share "$test"/WEB-INF/share本来我期望的第3行 prior v1为"$test"/WEB-INF/share/static_appendence.jsp的,没想到竟然返回了"$test"/WEB-INF/share
请问如何处理,谢谢
请确实阅读了题目再回答,谢谢
create table properties(c_key varchar(300),c_value varchar(300),c_re varchar(300));
insert into properties values('path.share.staticAppendence','"$path.share"/static_appendence.jsp','');
insert into properties values('path.share','"$test"/WEB-INF/share','');
insert into properties values('test','111','');
select b.c_key,b.c_value,b.c_re,decode(prior v1,null,c_value,replace(to_char(prior v1),'"$'||c_key||'"',c_value)) v1,prior v1 from (select a.*,c_value v1 from properties a) b start with c_key='path.share.staticAppendence' connect by instr(prior c_value,'"$'||c_key||'"')<>0
我本来想通过这样一条递归句子,将c_value列进行参数化处理的,格式是将"$c_key"替换为表中包含的c_key对应的值
本以为将新的值插入到旧的列中,就能替换掉旧的值,没想到我想错了,使用的还是旧的值
1 path.share.staticAppendence "$path.share"/static_appendence.jsp "$path.share"/static_appendence.jsp
2 path.share "$test"/WEB-INF/share "$test"/WEB-INF/share/static_appendence.jsp "$path.share"/static_appendence.jsp
3 test 111 111/WEB-INF/share "$test"/WEB-INF/share本来我期望的第3行 prior v1为"$test"/WEB-INF/share/static_appendence.jsp的,没想到竟然返回了"$test"/WEB-INF/share
请问如何处理,谢谢
请确实阅读了题目再回答,谢谢
select * from properties;
c_key c_value c_re
path.share.staticAppendence "$path.share"/static_appendence.jsp
path.share "$test"/WEB-INF/share
test 111
后面的没看懂,还有prior v1 是什么表?
准备数据
create table properties(c_key varchar(300),c_value varchar(300),c_re varchar(300));
insert into properties values('path.share.staticAppendence','"$path.share"/static_appendence.jsp','');
insert into properties values('path.share','"$test"/WEB-INF/share','');
insert into properties values('test','111','');么
我有一个表
t(key,value)
key value
---------
a1 "$a2"test1
a2 "$a3"test2
a3 test3
我想实现
查找a1的值时,能够通过递归,将其中的参数转换为表中的值
比方说我要a1的时候,能查到test3test2test1这样的结果
我要a2的时候,能查到test2test1这样的结果
谢谢
select hh.c_key from (
select b.c_key,substr(b.c_value,3,instr(b.c_value,'/')-4) abc from properties b) hh start with hh.c_key='path.share' connect
by prior hh.c_key=hh.abc)
忘了说我的数据库是oracle9i
wm_concat这个是连接用的,上网查下就知道9i怎么用了,你该结贴了