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

Odpytywanie xml na serwerze sql 2008

Twój przykładowy plik xml nie zawiera Pages węzeł. Oznacza to, że gdy FROM obliczana jest klauzula, tworzone jest sprzężenie krzyżowe między listą zerową a listą z jednym wierszem. Wynikowy produkt nie ma wierszy, więc nie ma nic SELECT ed, więc nic nie jest INSERT wyd.

Jeśli rzeczywiście chcesz wstawić jeden wiersz do BookDetails dla każdego booksdetail w przychodzącym pliku xml, powinieneś zrobić coś takiego

SELECT 
    ParamValues.PL.value('Pages[1]','int'),
    CAST(ParamValues.PLr.value('Description[1]','varchar(max)') AS text)
FROM 
    @xml.nodes('/booksdetail') as ParamValues(PL)

To znaczy, zniszcz przychodzący plik xml do booksdetail węzłów i wyciągnij każdy z .value jakie chcesz z tych wierszy.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Uwagi na temat edycji SQL Server 2019

  2. Co to jest impas w SQL Server?

  3. Konwertuj typ danych czasu na format AM PM:

  4. Usuń zduplikowane rekordy z widoku

  5. Funkcje agregujące na wielu tabelach nie dają poprawnych wyników