3
我輸入的是SQL Server表像這樣的XML列:轉換XML
<word Entry="Ketab" Affix="miyanvand" Pos="esm" Derv="Jamed" />
所需的輸出:像這樣的表:
Entry | Affix | Pos | Derv
Ketab | miyanvand | esm | Jamed
我輸入的是SQL Server表像這樣的XML列:轉換XML
<word Entry="Ketab" Affix="miyanvand" Pos="esm" Derv="Jamed" />
所需的輸出:像這樣的表:
Entry | Affix | Pos | Derv
Ketab | miyanvand | esm | Jamed
如果您正在使用sql-server 2005+。那麼,也許是這樣的:
DECLARE @xml XML=
'<word Entry="Ketab" Affix="miyanvand" Pos="esm" Derv="Jamed" />'
SELECT
Y.ID.value('(@Entry)[1]', 'Varchar(100)') as [Entry],
Y.ID.value('(@Affix)[1]', 'Varchar(100)') as [Affix],
Y.ID.value('(@Pos)[1]', 'Varchar(100)') as [Pos],
Y.ID.value('(@Derv)[1]', 'Varchar(100)') as [Derv]
FROM @xml.nodes('/word') as Y(ID)
或者你也可以做這樣的:
DECLARE @xml XML=
'<word Entry="Ketab" Affix="miyanvand" Pos="esm" Derv="Jamed" />'
SELECT
@xml.value('(/word/@Entry)[1]', 'varchar(50)') as Entry,
@xml.value('(/word/@Affix)[1]', 'varchar(50)') as Affix,
@xml.value('(/word/@Pos)[1]', 'varchar(50)') as Pos,
@xml.value('(/word/@Derv)[1]', 'varchar(50)') as Derv
或者,如果你有一個表。然後是這樣的:
DECLARE @tbl TABLE(ID INT,someXML XML)
INSERT INTO @tbl
VALUES
(1,'<word Entry="Ketab" Affix="miyanvand" Pos="esm" Derv="Jamed" />')
SELECT
tbl.ID,
Y.ID.value('(@Entry)[1]', 'Varchar(100)') as [Entry],
Y.ID.value('(@Affix)[1]', 'Varchar(100)') as [Affix],
Y.ID.value('(@Pos)[1]', 'Varchar(100)') as [Pos],
Y.ID.value('(@Derv)[1]', 'Varchar(100)') as [Derv]
FROM
@tbl AS tbl
CROSS APPLY someXML.nodes('/word') as Y(ID)
可以使用value
功能的XML列:
declare @t table (col1 xml)
insert @t values ('<word Entry="Ketab" Affix="miyanvand" />')
select t.col1.value('(/word/@Entry)[1]', 'varchar(50)') as Entry
, t.col1.value('(/word/@Affix)[1]', 'varchar(50)') as Affix
from @t t