我正在尝试以下查询从xml中删除一些属性。
UPDATE table_name
SET column_name = DELETEXML(xmltype (FILE_NAME), '//path/value[@id not like "%.1"]').getClobVal()
我想删除id值不像'%。1'的属性。但是不喜欢'方法存在 在单引号内,所以不考虑不作为一种方法。
有人帮我这个
答案 0 :(得分:1)
'不喜欢'是一个sql函数,你需要使用xpath等价物。
如果你知道只有一个'。'在字符串中然后沿着下面的行应该工作。
UPDATE table_name
SET column_name = DELETEXML(xmltype (FILE_NAME), '//path/value[not(substring-after(@id, '.') = "1")]').getClobVal()
如果可能有多个'。'然后它更复杂,但下面的内容应该有效。
UPDATE table_name
SET column_name = DELETEXML(xmltype (FILE_NAME), '//path/value[not(substring(@id, string-length(@id) - 2) = ".1")]').getClobVal()