【发布时间】:2015-01-22 17:02:27
【问题描述】:
我有一个包含 xml 的字段。我正在尝试从一个属性中提取数据,该属性后面是位于元素开始标记末尾的>。
例如
我需要 scale 属性中的 250。
<Request id=""1111"" order=""123456"" scale=""250""><Project file=""test.txt""/></Request>
我希望使用子字符串来提取它。所以我做了:
select substring(myxml from '%scale="#"%#""><Pro%' for '#') from mytable
这将返回 250,这是我想要的。
但是,问题是其他记录的下一个元素并不总是以<Pro开头
所以我尝试了这个
select substring(myxml from '%scale="#"%#""><%' for '#') from mytable
返回:
250"><Project file="test.txt"/></Request>
我哪里错了?有没有更好的办法? 非常感谢。
【问题讨论】:
-
""foobar""是错别字吗?双引号好像太多了 -
不是错别字。这就是数据被格式化并插入到字段中的方式。
-
这不是有效的 XML
-
正确。这就是它的存储方式。出于某种原因,它被故意操纵为双引号。
-
你能解释一下这个原因吗?我想知道为什么需要生成错误的 XML。
标签: sql postgresql pattern-matching substring