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
....