Tja, ditt XPath-uttryck här är "boven":
query('//branch')
Detta säger:välj alla <branch>
noder från hela dokumentet. Den är bara att göra vad du säger åt den att göra, verkligen...
Vad är det för fel på den här frågan?
SELECT
XMLData.query('/library/books/book[@type=sql:variable("@genre")]//branch')
FROM dbo.TableA
Det skulle hämta alla <branch>
subnoder för <book>
nod som har type="SF"
som ett attribut...
Vad försöker du uppnå med din query()
, exist()
och value()
alla i samma uttalande?? Helt möjligt kan det göras mycket enklare...
Dessutom:Jag tror att du misstolkar vad .exist()
i SQL Server gör XQuery. Om du har ditt uttalande här:
SELECT (some columns)
FROM dbo.TableA
WHERE XMLData.exist('//book[@type = sql:variable("@genre")]') = 1
du säger i princip åt SQL Server att hämta alla rader från dbo.TableA
där XML lagras i XMLData
innehåller en <book type=.....>
nod - du väljer rader från tabellen - NOT tillämpa ett urval på XMLData
kolumns innehåll...