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

SQL Server XML съществува()

Е, вашият XPath израз тук е „виновникът“:

query('//branch')

Това казва:изберете всички <разклонение> възли от целия документ. Той просто прави това, което му казвате да прави, наистина...

Какво не е наред с тази заявка тук??

SELECT 
    XMLData.query('/library/books/book[@type=sql:variable("@genre")]//branch')
FROM dbo.TableA

Това ще извлече всички подвъзли за възел, който има type="SF" като атрибут....

Какво се опитвате да постигнете с вашия query() , exist() и value() всички в едно и също твърдение?? Много е възможно да се направи много по-лесно...

Също така:Мисля, че тълкувате погрешно какво е .exist() в SQL Server XQuery прави. Ако имате вашето изявление тук:

 SELECT (some columns)
 FROM dbo.TableA
 WHERE XMLData.exist('//book[@type = sql:variable("@genre")]') = 1

вие основно казвате на SQL Server да извлече всички редове от dbo.TableA където XML се съхранява в XMLData съдържа <тип книга=.....> възел - избирате редове от таблицата - НЕ прилагане на селекция към XMLData съдържанието на колоната...



  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 Server 2008 мога да предам параметър със стойност на таблица към моята съхранена процедура от NHibernate. Как да постигна същото в Oracle

  3. Преобразуването не бе успешно при преобразуване на стойността на varchar 'simple' в тип данни int

  4. SQL заявка за уебсайт за игра под наем - отчет за доставка на игра

  5. Премахване на повтарящи се дублирани знаци