假设您有一张表' 城市'如下:
Id | CodeNumber | CityXml
您在CityXml列中存储了以下xml
<record>
<data code="10">istanbul</data>
<data code="20">madrid</data>
</record>
并且您想获得代码= 10的城市名称。为此,您可以写:
SELECT
ExtractValue(Cities.CityXml, '/record/data[code="10"][1]') AS CityName
FROM Cities
这很好用。当代码编号从表的另一列给出时,我的问题就开始了:
/* this does not work */
SELECT
CodeNumber,
ExtractValue(Cities.CityXml, '/record/data[code="CodeNumber"][1]') AS CityName
FROM Cities
在SQL Server中,您可以编写以下语句:
SELECT
CodeNumber,
ExtractValue(Cities.CityXml, '/record/data[code=sql:column("CodeNumber")][1]') AS CityName
FROM Cities
但你怎么能在MySQL中写这个呢?
答案 0 :(得分:2)
使用CONCAT
SELECT CodeNumber,
EXTRACTVALUE(Cities.City, CONCAT('/record/data/[code="', CodeNumber, '"][1]') AS CityName
FROM Cities