2
假設你有一個表「城市」如下:MySQL的XML與列數據比較
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當代碼號從表的另一列給我的問題開始?
非常感謝您對這個快速反應的XPath字符串。我現在試過了,它返回:「只支持常量xpath查詢」。 – isa 2014-08-27 17:48:36
由此,我們會推斷這種類型的設計不會在mysql中嗎? – isa 2014-08-27 17:49:22
我想你可能需要編寫一個存儲過程來獲取所有的'CodeNumber',然後執行一個使用'PREPARE'爲每個代碼編號創建動態SQL的循環。 – Barmar 2014-08-27 17:54:45