Sqlserver
 sql >> база данни >  >> RDS >> Sqlserver

SQL Server 2008 XPath

Можете да използвате .exist() метод - нещо като това:

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

Това сравнява конкретната стойност, която сте предоставили. Колкото по-точно можете да дефинирате XPath, където се очаква да бъде намерена тази стойност, толкова по-добре за вашата производителност.

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

е доста лошо - разглежда всеки един <Value> възел навсякъде в XML, за да намерите тази стойност.

Нещо подобно:

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

би било много по-фокусирано и по този начин много по-добро за производителност - но би било само онези конкретни възли, дефинирани от същия израз на 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. Актуализирайте същите данни от същата таблица

  2. Как да предотвратите атаки с инжектиране на SQL чрез Secure

  3. „Атомарно“ ли е изпълнението на T-SQL съхранена процедура?

  4. varchar(max) навсякъде?

  5. Как мога да създам потребител в базата данни на SQL Server Express, която добавих към моя проект?