sql >> Databáze >  >> RDS >> Sqlserver

SQL Server XML existuje()

Váš výraz XPath zde je "viníkem":

query('//branch')

Toto říká:vyberte vše <branch> uzly z celého dokumentu. Dělá jen to, co mu říkáte, opravdu...

Co je na tomto dotazu špatného?

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

To by načetlo všechny <branch> poduzly pro <book> uzel, který má type="SF" jako atribut....

Čeho se snažíte dosáhnout pomocí query() , exist() a value() vše ve stejném prohlášení?? Dost možná to jde udělat mnohem jednodušeji....

Také:Myslím, že si špatně vykládáte to, co .exist() v SQL Server XQuery ano. Pokud máte své prohlášení zde:

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

v podstatě říkáte serveru SQL, aby načetl všechny řádky z dbo.TableA kde je XML uloženo v XMLData obsahuje <book type=.....> uzel - vybíráte řádky z tabulky - NE použití výběru na XMLData obsah sloupce...



  1. Jak obnovit nebo změnit heslo Oracle sysdba

  2. Načítání obrázku PictureBox z databáze

  3. MySQLdb v Pythonu:Nelze se připojit k serveru MySQL na 'localhost'

  4. Jak přidám indexy do tabulek MySQL?