项目表中有个字段,名叫model_content,是CLOB类型,存贮如下格式的XML内容(简单例子,实际复杂得多):
<properties>
<property id= "subname1 " name= "用户名1 "> </property>
<property id= "subname2 " name= "用户名2 "> </property>
</properties> item节点有多个,我现在需要读出所有的iD和name;
说明只能用PL-SQL语句;
<properties>
<property id= "subname1 " name= "用户名1 "> </property>
<property id= "subname2 " name= "用户名2 "> </property>
</properties> item节点有多个,我现在需要读出所有的iD和name;
说明只能用PL-SQL语句;
用CLOB类型要读出ID,name相比就不方便了。
CSDN居然不能修改标题,愤怒
不能改成Xmltype啦,已经不可更改。
SELECT * FROM t
WHERE DBMS_LOB.INSTR(t.列,'查找值',1,1)>0;但是不知道你那上面XML内容的“格式”怎么保存进去的?每一行存哪些数据?
数据是已经存进去了,他们是按照clob存进去的,在PLsql developer里是双击该字段可以显示出XML节点的
给你个方法,取出id和name,可以根据需要再加工.思路肯定是这样的.DROP TABLE tt;
CREATE TABLE tt (n INT, m CLOB);
INSERT INTO tt VALUES(1,'<properties>
<property id= "subname1 " name= "用户名1 "> </property>
<property id= "subname2 " name= "用户名2 "> </property>
</properties> ');
INSERT INTO tt VALUES(1,'<properties>
<property id= "subname1 " name= "用户名1 "> </property>
<property id= "subname2 " name= "用户名2 "> </property>
<property id= "subname3 " name= "用户名3 "> </property>
</properties> ');
COMMIT;
SELECT REGEXP_REPLACE(REGEXP_SUBSTR(EXTRACT(XMLTYPE(M),
'/properties/property')
.GETSTRINGVAL(),
'id=".+" +name=".+"'),
'"/><property')
FROM TT;
输出:
id="subname1 " name="用户名1 id="subname2 " name="用户名2 "
id="subname1 " name="用户名1 id="subname2 " name="用户名2 id="subname3 " name="用户名3 "
貌似11g可以写.net存储过程,你就算用字符串操作实现了操作xml,我觉得那效率也不好吧。