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

xquery value() metode tidak berfungsi dan memberikan kesalahan

Atribut atau elemen apa yang ingin Anda ekstrak dari <Location> simpul?? Anda tidak dapat mengonversi seluruh simpul XML menjadi bigint (seperti yang coba dilakukan kueri Anda....)

Apakah Anda mencoba mengekstrak <Location LaborHours="1.0"> nilai??

Maka Anda perlu:

;WITH XMLNAMESPACES(DEFAULT 'http://schemas.microsoft.com/sqlserver/2004/07/adventure-works/ProductModelManuInstructions')
SELECT 
    XC.value('@LaborHours', 'decimal(18,4)')
FROM
    Production.ProductModel
CROSS APPLY
    Instructions.nodes('/root/Location') AS XT(XC)

Pertama-tama:karena ada banyak <Location> node dalam XML Anda, Anda harus menggunakan CROSS APPLY dan .nodes() berfungsi untuk mendapatkan semua <Location> xml node.

Kedua, karena Anda ingin mengambil atribut LaborHours (asumsi saya), Anda perlu menggunakan .value('@LaborHours )` pendekatan.

Dan terakhir, karena nilai tersebut adalah 1.0 atau 2.5 , Anda harus menggunakan decimal (dengan presisi dan skala yang tepat) untuk mendapatkan nilai tersebut - bukan bigint ....




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Arsitektur SQL Server AlwaysOn (Availability Group) dan Instalasi Langkah demi Langkah -2

  2. Saya tidak dapat memulai browser SQL Server

  3. SQL Query Beberapa Kolom Menggunakan Distinct pada Satu Kolom Saja

  4. Sorotan Cloud Basic:Alat Pemantau Kinerja Basis Data Gratis Terbaik

  5. Permintaan tanggal pembuatan tabel SQL Server