第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

從SQL Server 2008中的XML字段中選擇值

從SQL Server 2008中的XML字段中選擇值

慕姐8265434 2019-10-08 14:45:08
僅查看我的XML字段,我的行如下所示:<person><firstName>Jon</firstName><lastName>Johnson</lastName></person><person><firstName>Kathy</firstName><lastName>Carter</lastName></person><person><firstName>Bob</firstName><lastName>Burns</lastName></person>請注意,這是我表中的三行。我想以表格形式返回SQL結果Jon  | JohnsonKathy| CarterBob  | Burns什么查詢將完成此任務?
查看完整描述

4 回答

?
神不在的星期二

TA貢獻1963條經(jīng)驗 獲得超6個贊

考慮到XML數(shù)據(jù)來自表'table'并存儲在'field'列中:使用XML方法,使用提取值,使用提取xml.value()項目節(jié)點xml.nodes(),使用CROSS APPLY聯(lián)接:


SELECT 

    p.value('(./firstName)[1]', 'VARCHAR(8000)') AS firstName,

    p.value('(./lastName)[1]', 'VARCHAR(8000)') AS lastName

FROM table 

    CROSS APPLY field.nodes('/person') t(p)

如果每個字段僅包含一個元素“ person” nodes(),cross apply則可以放棄。如果XML是變量,則選擇FROM @variable.nodes(...),則不需要cross apply。


查看完整回答
反對 回復 2019-10-08
?
鳳凰求蠱

TA貢獻1825條經(jīng)驗 獲得超4個贊

這篇文章對解決我的XML格式略有不同的問題很有幫助...我的XML包含一個鍵列表,例如以下示例,我將XML存儲在名為DeleteBatch的表的SourceKeys列中:


<k>1</k>

<k>2</k>

<k>3</k>

創(chuàng)建表并用一些數(shù)據(jù)填充它:


CREATE TABLE dbo.DeleteBatch (

    ExecutionKey INT PRIMARY KEY,

    SourceKeys XML)


INSERT INTO dbo.DeleteBatch ( ExecutionKey, SourceKeys )

SELECT 1, 

    (CAST('<k>1</k><k>2</k><k>3</k>' AS XML))


INSERT INTO dbo.DeleteBatch ( ExecutionKey, SourceKeys )

SELECT 2, 

    (CAST('<k>100</k><k>101</k>' AS XML))

這是從XML中選擇鍵的SQL:


SELECT ExecutionKey, p.value('.', 'int') AS [Key]

FROM dbo.DeleteBatch

    CROSS APPLY SourceKeys.nodes('/k') t(p)

這是查詢結果...


ExecutionKey鍵

1 1

1 2

1 3

2 100

2 101


查看完整回答
反對 回復 2019-10-08
?
qq_遁去的一_1

TA貢獻1725條經(jīng)驗 獲得超8個贊

這可能會回答您的問題:


select cast(xmlField as xml) xmlField into tmp from (

select '<person><firstName>Jon</firstName><lastName>Johnson</lastName></person>' xmlField

union select '<person><firstName>Kathy</firstName><lastName>Carter</lastName></person>'

union select '<person><firstName>Bob</firstName><lastName>Burns</lastName></person>'

) tb


SELECT

    xmlField.value('(person/firstName)[1]', 'nvarchar(max)') as FirstName

    ,xmlField.value('(person/lastName)[1]', 'nvarchar(max)') as LastName

FROM tmp


drop table tmp


查看完整回答
反對 回復 2019-10-08
  • 4 回答
  • 0 關注
  • 615 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網(wǎng)微信公眾號