Sqlserver
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Sqlserver

phương thức xquery value () không hoạt động và đang báo lỗi

Bạn muốn trích xuất thuộc tính hoặc phần tử nào từ <Location> điểm giao?? Bạn không thể chuyển đổi toàn bộ nút XML thành bigint (khi truy vấn của bạn cố gắng thực hiện ....)

Bạn có thử giải nén <Location LaborHours="1.0"> không giá trị ??

Sau đó, bạn cần:

;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)

Trước hết:vì có nhiều <Location> trong XML của bạn, bạn phải sử dụng CROSS APPLY.nodes() hàm để lấy tất cả <Location> các nút xml.

Thứ hai, vì bạn muốn truy xuất thuộc tính LaborHours (giả định của tôi), bạn cần sử dụng .value('@LaborHours ) `cách tiếp cận.

Và cuối cùng, vì các giá trị đó là 1.0 hoặc 2.5 , bạn phải sử dụng decimal (với độ chính xác và tỷ lệ thích hợp) để nhận các giá trị đó - không phải 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. Cách giảm kích thước của bảng SQL Server đã phát triển do thay đổi kiểu dữ liệu

  2. Tìm hiểu xem một bảng có được phân vùng trong SQL Server (T-SQL) hay không

  3. 4 cách giúp ngăn quá tải cảnh báo với tính năng giám sát máy chủ SQL

  4. Làm cách nào để tạo một hàm SQL Server để nối nhiều hàng từ một truy vấn con vào một trường được phân tách duy nhất?

  5. Triển khai Tìm kiếm Toàn văn trong SQL Server 2016 cho Người dùng Nâng cao