2
我試圖用sql進行xml解析。如何使用T-SQL和XQuery從XML中進行選擇
我試着從Skill
標籤選擇,但只有一個行顯示,請提前任何一個幫助,感謝
我的XML格式如下
declare @UserDetails XML
set @UserDetails='
<Registration>
<objUserBasicData>
<User_Id>0</User_Id>
<UserType>0</UserType>
<UserName>[email protected]</UserName>
<Password>user123</Password>
<LastLoginTime>2015-08-08T18:22:53.9953905+05:30</LastLoginTime>
<IsActive>true</IsActive>
<CreatedBy>0</CreatedBy>
<CreatedOn>2015-08-08T18:22:53.9953905+05:30</CreatedOn>
<ModifiedBy>0</ModifiedBy>
<ModifiedOn>2015-08-08T18:22:53.9953905+05:30</ModifiedOn>
</objUserBasicData>
<objUserDetails>
<UserDetails_Id>0</UserDetails_Id>
<User_Id>0</User_Id>
<FirstName>test</FirstName>
<MiddleName />
<LastName>test</LastName>
<ContactName />
<Email>[email protected]</Email>
<AlternativeEmail />
<RegisterDate>2015-08-08T18:22:54.0164133+05:30</RegisterDate>
<Address1 />
<Address2 />
<Country>0</Country>
<State>0</State>
<City>1</City>
<PostCode />
<HomePhone />
<Mobile>1231231232</Mobile>
<Fax />
<Marketing>false</Marketing>
<HasCV>false</HasCV>
<CVName>564195d7-4dfa-42e0-abc1-ef611be588a2.doc</CVName>
<HasJobsByEmail>false</HasJobsByEmail>
<Website />
<CreatedBy>0</CreatedBy>
<CreatedOn>2015-08-08T18:22:54.0164133+05:30</CreatedOn>
<ModifiedBy>0</ModifiedBy>
<ModifiedOn>2015-08-08T18:22:54.0164133+05:30</ModifiedOn>
<DateOfBirth>2015-08-10T00:00:00</DateOfBirth>
<CurrentJobTitle>test</CurrentJobTitle>
<Career_Id>2</Career_Id>
<PrefferedLocation>1</PrefferedLocation>
<ExperienceInYears>5</ExperienceInYears>
<Gender>1</Gender>
</objUserDetails>
<Skills>
<int>2</int>
<int>1</int>
</Skills>
</Registration>'
我使用的查詢選擇數據
SELECT
TEMPTABLE.UserData.value('int[1]','int') AS int
FROM
@UserDetails.nodes('/Registration/Skills')AS TEMPTABLE(UserData)
它就會導致作爲
int
-----------
2
的1
缺少
的我用
DECLARE @XMLDocPointer INT
EXEC sp_xml_preparedocument @XMLDocPointer OUTPUT, @UserDetails
SELECT *
FROM OPENXML(@XMLDocPointer,'/Registration/Skills',3)
WITH ([int] INT)
EXEC sp_xml_removedocument @XMLDocPointer
同樣的結果是一樣的
int
-----------
2
我有什麼做的得到的結果作爲
int
-----------
2
1
非常感謝你這工作,我試過'選擇TEMPTABLE.UserData.value('INT [ 1]','int')AS int FROM @ UserDetails.nodes('/ Registration/Skills/int')AS TEMPTABLE(UserData)'但它變得空了。再次感謝你 –