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

SQL Server 2008 XPath

Możesz użyć .exist() metoda - coś takiego:

SELECT 
(list of columns) 
FROM
dbo.YourTable
WHERE
YourXmlColumn.exist('//Value[text()="5052095050830"]') = 1

To sprawdza tę konkretną wartość, którą podałeś. Im dokładniej określisz ścieżkę XPath, w której oczekuje się znalezienia tej wartości, tym lepiej dla Twojej wydajności.

YourXmlColumn.exist('//Value[text()="5052095050830"]') = 1

jest dość kiepski - zagląda do każdego <Value> w dowolnym miejscu w XML, aby znaleźć tę wartość.

Coś takiego:

YourXmlColumn.exist('/Attributes/ProductVariantAttribute/ProductVariantAttributeValue/Value[text()="5052095050830"]') = 1

byłby znacznie bardziej skoncentrowany, a przez to znacznie lepszy pod względem wydajności - ale dotyczyłby tylko tych konkretnych węzłów zdefiniowanych przez tę samą instrukcję XPath



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Najlepsze sposoby użycia instrukcji SQL DELETE w tabeli SQL

  2. Uzyskać najbliższą długość i szerokość geograficzną z tabeli bazy danych MSSQL?

  3. Zaktualizuj kolumnę int w tabeli z unikalnymi wartościami przyrostowymi

  4. TSQL-2008 SUM(X) OVER (PARTYCJA... ZAMÓWIENIE WEDŁUG KLAUZULI)

  5. Wielokąt SQL Spatial na lewą stronę