我有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中执行此操作,例如:
SELECT TestSuiteDefinition.query('data(/ test_suite / test_case / @ id)')名称FROM TestSuite WHERE TestSuiteId ='368'
但是无法在MySQL中弄明白。 注意:尝试MySQL函数ExtractValue()但检索元素属性没有成功。 感谢
答案 0 :(得分:2)
$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
)
)
答案 1 :(得分:1)
我没有测试过这个,但试一试
选择ExtractValue(TestSuiteDefinition,'/ test_case [1] / @id')作为名称FROM TestSuite WHERE TestCaseId ='''368“
这将让你第一个回来。您需要进行多次ExtractValue调用以获取每个属性我认为