2 Câu hỏi: Truy vấn SQL XML trả về giá trị trống

câu hỏi được tạo ra tại Wed, May 8, 2019 12:00 AM

Tôi đang cố gắng thiết lập một truy vấn để đọc một biến XML và nó dường như đang trả về một bảng trống.

XML tôi đang sử dụng:

<collection>
  <object parentid="57ae88af-425e-448f-a0a3-b83738fe51b1" parenttype="Object">
    <fields>
      <field name="ID">
        <value>57</value>
      </field>
    </fields>
  </object>
  <object parentid="57ae88af-425e-448f-a0a3-b83738fe51b1" parenttype="Object">
    <fields>
      <field name="ID">
        <value>58</value>
      </field>
    </fields>
  </object>
</collection>

Các giá trị tôi muốn đọc nằm giữa các thẻ này: <value>58</value>

Tôi đã sử dụng câu trả lời này để làm cho mã hoạt động ở vị trí đầu tiên: truy vấn sql giá trị xml trả về NULL

Sau khi thử các kết hợp khác nhau từ các câu trả lời khác với "Áp dụng chéo", v.v

Mã tôi đã làm việc cho đến nay:

DECLARE @T1 AS XML

  SET @T1 = (
  SELECT
  (CONVERT(XML,p.Selected_Roles))

 FROM [ReportDB1].[dbo].[Job_Roles] AS P
 WHERE p.ID ='27' )

 SELECT 
 t.x.value('value[1]', 'int') AS test
 FROM @T1.nodes('/collection/objects/fields/field') t(x)

Tôi mong muốn một đầu ra của mọi giá trị trong thẻ giá trị sẽ được liệt kê trong kiểm tra cột. Điều thực sự xảy ra là tôi có được kiểm tra cột nhưng không có hàng.

    
2
  1. Hỗ trợ XML là đặc biệt dành cho nhà cung cấp - vì vậy, vui lòng thêm thẻ để chỉ định xem bạn đang sử dụng mysql, postgresql, 0600350991111001010350 sql-server - hoặc một cái gì đó hoàn toàn khác.
    2019-05-08 15: 05: 19Z
  2. Mã của bạn có vẻ hoàn toàn ổn, nhưng có một lỗi đánh máy: oracle: db2 không có FROM @T1.nodes('/collection/objects/fields/field') trong mẫu XML ...
    2019-05-08 15: 45: 30Z
  3. Cảm ơn bạn đã phát hiện lỗi chính tả, đã sửa và nó hoạt động như mong đợi
    2019-05-09 07: 41: 50Z
2 Câu trả lời                              2                         

IF này dành cho SQL Server - sau đó bạn có thể sử dụng một cái gì đó như thế này (nếu bạn muốn chỉ các giá trị bên trong các thẻ objects) :

s     
0
2019-05-08 15: 08: 17Z

Vấn đề đơn giản được giải quyết lỗi chính tả, tín dụng cho Shnugo: mã chính xác phải là:

<value>..</value>     
0
2019-05-09 08: 07: 27Z
SELECT
    xc.value('data(.)', 'int')
FROM
    @T1.nodes('/collection/object/fields/field[@name="ID"]/value') AS XT(XC)
nguồn đặt đây