Sqlserver
 sql >> Baza danych >  >> RDS >> Sqlserver

Zapytanie o dane z kolumny XML w SQL Server

.query zawsze zwróci typ danych XML.

Aby zapytać o wartość, użyj ".value" i określ typ danych jako drugi parametr.

Użyj tego zamiast:

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. Scal dane z dwóch wierszy w jeden

  2. =* operator w sql

  3. Tabela w Excelu z procedury składowanej SQL Server z polem parametru w skoroszycie

  4. Spotlight Cloud Basic:najlepsze bezpłatne narzędzie do monitorowania wydajności bazy danych

  5. SQL Server CTE i przykład rekurencji