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

Metoda xquery value() nie działa i daje błąd

Jaki atrybut lub element chcesz wyodrębnić z węzły? Nie możesz przekonwertować całego węzła XML na bigint (w miarę jak twoje zapytanie próbuje to zrobić...)

Czy próbujesz wyodrębnić wartość??

Następnie potrzebujesz:

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

Po pierwsze:ponieważ istnieje wiele węzły w twoim XML, musisz użyć CROSS APPLY i .nodes() funkcja, aby uzyskać wszystkie węzły XML.

Po drugie, ponieważ chcesz pobrać atrybut Godziny pracy (moje założenie), musisz użyć .value('@LaborHours )` podejście.

I na koniec, ponieważ te wartości to 1.0 lub 2.5 , musisz użyć dziesiętnie (z odpowiednią precyzją i skalą), aby uzyskać te wartości - nie 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. Jak wygenerować pole automatycznego przyrostu w wybranym zapytaniu?

  2. Odmówiono uprawnienia SELECT do obiektu „Adres”, baza danych „CNET_85731”, schemat „dbo”

  3. Używanie instrukcji CASE wewnątrz klauzuli IN

  4. Jak WYBRAĆ * ale bez Nazwy kolumn muszą być unikalne w każdym widoku

  5. Konwersja liczby na stopy i cale