各位好,
目前在寫SQL查詢時碰到一個問題,
ROLE_MEMBER表中,USER_SET欄位為XML。
舉例其中一筆XML資料,Element tpye會有其他如group。
<UserSet>
<Element type="user">
<userId>190b5641-f999-4fb8-ac94-de7d120e33a7</userId>
</Element>
<Element type="user">
<userId>054cd0d6-f61f-4800-a973-cbc45c4e4c74</userId>
</Element>
<Element type="user">
<userId>e25e6c03-16c6-4166-bf44-04ff3970ef28</userId>
</Element>
<Element type="group" isDepth="True">
<groupId>fd63894d-a10d-44e4-a039-a7050b166d5c</groupId>
</Element>
</UserSet>
我想要查詢結果
目前程式碼如下:
SELECT
User_Set,
UserSet.value('@type', 'varchar(50)') AS 'Element type',
UserSet.value('(groupId/text())[1]', 'varchar(50)') AS 'groupId',
UserSet.value('(userId/text())[1]', 'varchar(50)') AS 'userId'
FROM
TB_EB_SEC_ROLE_MEMBER
CROSS APPLY
USER_SET.nodes('/UserSet/Element') AS UserSet(UserSet)
結果如下:
只會跑出XML中第一筆資料,問了GPT大神也是給我上面的程式碼
我認為應該是要從Xpath那邊下手,但不知道如何修改
懇請大家幫忙,謝謝
=========================================
更新一下
我好像耍笨了,輸出結果太多行XML看錯了
這樣的結果應該就是我要的的 ..
留著給大家看吧