Sqlserver
 sql >> Teknologi Basis Data >  >> RDS >> Sqlserver

Data kueri dari kolom XML di SQL Server

.query akan selalu mengembalikan tipe data XML.

Untuk mengkueri nilai, Anda harus menggunakan ".value", dan menentukan tipe data sebagai parameter kedua.

Gunakan ini sebagai gantinya:

declare @xmlobj as xml = '<SimpleUserData xmlns="http://schemas.datacontract.org/2004/07/MyProject.CustomFx.Web" xmlns:i="http://www.w3.org/2001/XMLSchema-instance" xmlns:z="http://schemas.microsoft.com/2003/10/Serialization/" z:Id="1" z:Type="MyProject.CustomFx.Web.SimpleUserData" z:Assembly="MyProject.CustomFx.Web, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null">
      <BatchDescription z:Id="2">I want this value</BatchDescription>
      <BatchID>9c437c08-0f28-4c77-9a50-49a7a4e8930a</BatchID>
      <BatchTemplateID>And this value too</BatchTemplateID>
    </SimpleUserData>';

WITH XMLNAMESPACES('http://schemas.datacontract.org/2004/07/MyProject.CustomFx.Web' as x)
select
  @xmlobj.value('(/x:SimpleUserData[1]/x:BatchDescription[1])','nvarchar(max)') as value1
 ,@xmlobj.value('(/x:SimpleUserData[1]/x:BatchTemplateID[1])','nvarchar(max)') as value2;



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Ganti String dengan String lain di SQL Server (T-SQL)

  2. Pernyataan CASE WHEN untuk klausa ORDER BY

  3. SQL SERVER 2008 PEMICU PADA CREATE TABLE

  4. Kesalahan pembulatan SQL Server, Memberikan nilai yang berbeda

  5. Hanya menyisipkan baris jika belum ada