MySql查询以检索xml的元素属性的值


MySql query to retrieve value of element attribute of xml

我有一个mysql表(比如TestSuite),在TestSuiteDefinition列中保存xml内容(尽管是长文本),

 <test_suite id="368">
   <name>TestSuite1</name>
   <description>TestSuite</description>
   <test_case id="141" version="" />
   <test_case id="142" version="" />
   <test_case id="143" version="" />
   <test_case id="144" version="" />
</test_suite>

现在,我想检索属性的值(在本例中为"id")。我知道如何在MS SQL中做到这一点,例如:

选择TestSuiteDefinition.query('data(/testronguite/test_case/@id)')作为名称FROM TestSuite WHERE TestSuiteId='368'

但无法在MySQL中找到它。注意:尝试了MySQL函数ExtractValue(),但在检索元素属性时没有成功。感谢

$rows = $mysqli->query(<<<EOQ
    SELECT ExtractValue(TestSuiteDefinition,'//test_case/@id') as name
    FROM   TestSuite
    WHERE  TestCaseId=368
EOQ
) or die($mysqli->error);
print_r($rows->fetch_all());

输出:

Array
(
    [0] => Array
        (
            [0] => 141 142 143 144
        )
)

我还没有测试过,但试试

选择ExtractValue(TestSuiteDefinition,'/test_case[1]/@id')作为名称FROM TestSuite WHERE TestCaseId=''368"

这会让你第一个回来。您需要进行多次ExtractValue调用才能取回每个属性,我认为