假設我已將xml存儲在數據庫中。它包含聯繫人的列表,像這樣:將XML轉換爲行
<Person>
<Name>Irwin</Name>
<Address>Home, In a place</Address>
<Contact type="mobile">7771234</Contact>
<Contact type="home">6311234</Contact>
<Contact type="work">6352234</Contact>
<Contact type="fax">6352238</Contact>
</Person>
它存儲在SQL Server數據庫中的XML列,表中的這種結構:
TABLE [Contacts](
[ID] [bigint] IDENTITY(1,1) NOT NULL,
[Info] [xml] NOT NULL,
[Status] [tinyint] NOT NULL,
[CreateTime] [datetime] NOT NULL,
) ON [PRIMARY]
我想編寫一個查詢它將聯繫人元素轉換爲新表的行,並與聯繫人表的ID字段相匹配。
我已經試過這樣:
SELECT Cast(Request.query('/Person/Contact/text()') as varchar(100)) as [Number], ID
FROM Contacts
但它從塔中給定的XML片段提取所有數據,並與該行的ID一起把它全部在一排,像這樣:
號碼,ID
7771234631123463522346352238,1500
當我想要得到的是這個:
號碼,ID
7771234,1500
6311234,1500
6352234,1500
6352238,1500
你能指出我朝着正確的方向?
除了公認的答案,這是有幫助的: http://blog.beyondrelational.com/2007/11/xml-workshop-v-reading-values-from-xml.html – Irwin 2009-11-10 14:20:00