sql >> Database teknologi >  >> RDS >> Sqlserver

SQL Server XML findes()

Nå, dit XPath-udtryk her er "synderen":

query('//branch')

Dette siger:vælg alle noder fra hele dokumentet. Den er bare at gøre, hvad du beder den om at gøre, virkelig...

Hvad er der galt med denne forespørgsel her?

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

Det ville hente alle undernoder til node, der har type="SF" som en egenskab...

Hvad prøver du at opnå med din query() , exist() og værdi() alle i samme udsagn?? Det kan sagtens gøres meget nemmere....

Også:Jeg tror, ​​du misfortolker hvad .exist() i SQL Server gør XQuery. Hvis du har din erklæring her:

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

du beder dybest set SQL Server om at hente alle rækker fra dbo.TableA hvor XML er gemt i XMLData indeholder en node - du vælger rækker fra tabellen - IKKE at anvende en markering på XMLData kolonnens indhold...



  1. Sådan formateres tal med et minus/plus-log i Oracle

  2. præstationsproblem:forskel mellem select s.* vs select *

  3. Sådan opretter du indeks på LOWER(users.username) i Rails (ved hjælp af postgres)

  4. GeoServer vil ikke skrive til min PostgreSQL-opdaterbare visning