Select xml 字段中的值 mysql

Select value in xml field with mysql

我在 sulu cms 数据库中有一个字段。

Table phpcr_nodes 和场地道具

此字段在 XML 中存储如下:

<?xml version="1.0" encoding="UTF-8"?>
<sv:node xmlns:sv="http://www.jcp.org/jcr/sv/1.0" xmlns:jcr="http://www.jcp.org/jcr/1.0" xmlns:mix="http://www.jcp.org/jcr/mix/1.0" xmlns:nt="http://www.jcp.org/jcr/nt/1.0" xmlns:rep="internal" xmlns:xs="http://www.w3.org/2001/XMLSchema">
   <sv:property sv:name="i18n:en-description" sv:type="String" sv:multi-valued="0">
      <sv:value length="2560">MY FIRST ITEM</sv:value>
   </sv:property>
   <sv:property sv:name="i18n:en-subtitle" sv:type="String" sv:multi-valued="0">
      <sv:value length="28">MY SECOND ITEM</sv:value>
   </sv:property>
</sv:node>

我要抓值

<sv:value length="2560">MY FIRST ITEM</sv:value>

<sv:value length="28">MY SECOND ITEM</sv:value>

我试过这样的方法:

SELECT
    SUBSTRING_INDEX(ExtractValue(props, '//sv:name="i18n:en-subtitle"'), ' ', 1) AS `subtitle`
from phpcr_nodes

这是一个MySQL数据库,我怎样才能得到SQL中的值?

提前致谢

如果您需要向 PHPCR 写入查询,您应该使用角兔抽象及其查询生成器,这样您就可以编写正常的 SQL2 个查询,角兔会根据您的适配器将它们转换为正确的 SQL 查询.

如果您对角兔如何将 SQL 2 查询转换为 SQL 查询感兴趣,请查看其 QOMWalker 实现:

https://github.com/jackalope/jackalope-doctrine-dbal/blob/master/src/Jackalope/Transport/DoctrineDBAL/Query/QOMWalker.php

EXTRACTVALUE(props, '//sv:property[@sv:name="i18n:en-subtitle"]/sv:value')

“EXTRACTVALUE”是一个 XPATH,因此您也可以将 XML 复制到 http://xpather.com/ 之类的网站中,为您的 属性 选择找到正确的 xpath。