Mysql 我需要使用extractValue查询的帮助
谁能帮我为拥有一只价值250英镑的鸟的客户显示客户名称和客户id?我似乎能弄明白这一点 以下是一个非工作解决方案:Mysql 我需要使用extractValue查询的帮助,mysql,xml,extract-value,Mysql,Xml,Extract Value,谁能帮我为拥有一只价值250英镑的鸟的客户显示客户名称和客户id?我似乎能弄明白这一点 以下是一个非工作解决方案: Select extractValue(datax, '/client/cl_name' ) as Client , extractValue(datax, 'client/@cl_id') as ClientID from a_xml.xml_animals Where extractValue(datax,'count(//animal/an_type[self:text
Select
extractValue(datax, '/client/cl_name' ) as Client
, extractValue(datax, 'client/@cl_id') as ClientID
from a_xml.xml_animals
Where extractValue(datax,'count(//animal/an_type[self:text()="bird" and an_price= 250])') > 0;
我也尝试过:
Select
, extractValue(datax, '/client/cl_name' ) as Client
, extractValue(datax, 'client/@cl_id') as ClientID
from a_xml.xml_animals
Where extractValue(datax,'count(//animal/an_type[self:text()="bird"])') > 0
and
extractValue (datax, 'count(/client[an_price= 250])') > 0;
以下是我正在使用的插入和表格:
use a_xml;
drop table if exists a_xml.xml_animals;
create table a_xml.xml_animals(
id int primary key
, datax TEXT)
;
truncate table a_xml.xml_animals;
insert into a_xml.xml_animals values (1,
'<client cl_id="8243"><cl_name>Johnson</cl_name><pets>
<animal><an_id>136</an_id><an_type>bird</an_type><an_name>ShowBoat</an_name><an_price>75</an_price></animal>
<animal><an_id>137</an_id><an_type>bird</an_type><an_name>Mr. Peanut</an_name><an_price>250</an_price></animal>
</pets></client>');
insert into a_xml.xml_animals values (2,
'<client cl_id="3908"><cl_name>Nelson</cl_name><pets>
<animal><an_id>1201</an_id><an_type>cat</an_type>
<an_name>Ursula</an_name><an_name>Snookums</an_name><an_name>Mittens</an_name><an_price>500</an_price></animal>
</pets></client>');
insert into a_xml.xml_animals values (3,
'<client cl_id="3775"><cl_name>Miller</cl_name><pets/></client>');
insert into a_xml.xml_animals values (4,
'<client cl_id="8467"><cl_name>Miller</cl_name><pets>
<animal><an_id>205</an_id><an_type>bird</an_type><an_name>ShowBoat</an_name><an_price>75</an_price></animal>
<animal><an_id>207</an_id><an_type>bird</an_type><an_name>Mr. Peanut</an_name><an_price>150</an_price></animal>
<animal><an_id>212</an_id><an_type>bird</an_type><an_name>Tweet</an_name><an_price>275</an_price></animal>
<animal><an_id>215</an_id><an_type>bird</an_type><an_name>Charlie</an_name><an_price>380</an_price></animal>
</pets></client>');
insert into a_xml.xml_animals values (5,
'<client cl_id="4578"><cl_name>Leeson</cl_name><pets>
<animal><an_id>358</an_id><an_type>bird</an_type><an_name>Archibald</an_name><an_price>275</an_price></animal>
<animal><an_id>369</an_id><an_type>cat</an_type><an_name>Smithers</an_name><an_name>Smuthers</an_name><an_price>250</an_price></animal>
<animal><an_id>3478</an_id><an_type>dog</an_type><an_name>Bossun</an_name><an_price>250</an_price></animal>
</pets></client>');
insert into a_xml.xml_animals values (6,
'<client cl_id="9478"><cl_name>Terry</cl_name><pets>
<animal><an_id>658</an_id><an_type>bird</an_type><an_name>Archibald</an_name><an_price>275</an_price></animal>
<animal><an_id>669</an_id><an_type>bird</an_type><an_name>Smithers1</an_name><an_name>Smuthers2</an_name><an_price>250</an_price></animal><
animal><an_id>2478</an_id><an_type>bird</an_type><an_name>cat </an_name><an_price>250</an_price></animal>
</pets></client>');
insert into a_xml.xml_animals values (7,
'<client cl_id="4478"><cl_name>Clyde</cl_name><pets>
<animal><an_id>101</an_id><an_type>bird</an_type><an_name>Archibald</an_name><an_price>275</an_price></animal>
<animal><an_id>102</an_id><an_type>cat</an_type><an_name>Smithers</an_name><an_name>Smuthers</an_name><an_price>250</an_price></animal>
<animal><an_id>103</an_id><an_type>dog</an_type><an_name>Bossun</an_name><an_price>250</an_price></animal>
<animal><an_id>301</an_id><an_type>bird</an_type><an_name>Archibald</an_name><an_price>275</an_price></animal>
<animal><an_id>201</an_id><an_type>cat</an_type><an_name>Smithers</an_name><an_name>Smuthers</an_name><an_price>250</an_price></animal>
<animal><an_id>401</an_id><an_type>dog</an_type><an_name>Bossun</an_name><an_price>250</an_price></animal>
</pets></client>');
使用xml;
如果存在一个_xml.xml _,则删除表;
创建表a_xml.xml_(
id int主键
,datax文本)
;
截断表a_xml.xml_;
将值(1,
“约翰逊
136birdShowBoat75
137鸟类花生先生250
');
将值(2,
“尼尔森
1201卡特
UrsulaSnookumsMittens500
');
将值(3,
“米勒”);
将值(4,
“米勒
205B鸟类展示船75
207比亚努特先生150
212birdtweet 275
215爱尔兰380
');
将值(5,
“利森
358birdArchibald275
369猫匠斯马瑟斯250
3478dogBossun250
');
将值(6,
“特里
658birdArchibald275
669鸟人1 muthers2250<
动物>2478鸟类250类
');
将值(7,
”“克莱德
101birdArchibald275
102猫匠150
103dogBossun250
301birdArchibald275
201catSmithersSmuthers250
401dogBossun250
');
试试这个:
Select
, extractValue(datax, '/client/cl_name' ) as Client
, extractValue(datax, 'client/@cl_id') as ClientID
from a_xml.xml_animals
WHERE extractValue(datax, 'count(//animal[an_type="bird"])') > 0
AND extractValue(datax, 'count(//animal[an_price=250])') > 0;