XQuery Operatorzy przeciwko typ danych xml

Kwerenda XQuery obsługuje następujące operatory:

  • W takim wypadku są: prawidłowego wyrażenia, wykorzystujące predykatu wartość [1] na każdym z trzech poziomów inny węzeł

  • Należy zauważyć, że w każdym przypadek predykat wiąże do węzła w ścieżce wyrażenie zostało zastosowane.

  • Operators for general comparison ( =, !=, <, >, <=, >= )

Aby uzyskać więcej informacji dotyczących tych operatorów, zobacz Porównanie wyrażenia (XQuery).

Przykłady

A.Dlatego zwraca następujące czynności:

Nawiasy można również zmienić kolejność wykonywania predykatu.The query retrieves a sequence of telephone numbers for each customer from the AdditionalContactInfo column of the Contact table.W tym przykładzie, zamówienia, w którym predykat jest zastosowane zmiany.

The query uses the = comparison operator.Each node in the sequence on the right side of the = operator is compared with each node in the sequence on the left side.If the nodes match, the node comparison is TRUE.Kwantyfikatory mogą być używane i dodać więcej niż jeden raz w nawiasy klamrowe predykatu, sam.

WITH XMLNAMESPACES (
'https://schemas.microsoft.com/sqlserver/2004/07/adventure-works/ContactInfo' AS ACI,
'https://schemas.microsoft.com/sqlserver/2004/07/adventure-works/ContactTypes' AS ACT)
SELECT ContactID 
FROM   Person.Contact
WHERE  AdditionalContactInfo.value('
      //ACI:AdditionalContactInfo//ACT:telephoneNumber/ACT:number = 
          ("111-111-1111", "222-2222")',
      'bit')= cast(1 as bit)

Na przykład korzystając z poprzedniego przykładu, Oto prawidłowe korzystanie z więcej niż jeden kwantyfikator w złożonych subexpression predykatu. Each phone telephone number value retrieved from the AdditionalContactInfo column is compared with the set of two telephone numbers.Tylko węzły w sekwencji, dla których wartość predykatu prawdziwość ma wartość PRAWDA, są zwracane w wyniku.

B.Na przykład następujące wyrażenie ścieżka zawiera predykatu w jej drugi krok:

Operator + w tej kwerendzie jest operatorem wartości, ponieważ jest stosowany do pojedynczego elementu.Na przykład do wielkości partii zwracanej przez kwerendę można dodać wartość 1.

SELECT ProductModelID, Instructions.query('
     declare namespace 
 AWMI="https://schemas.microsoft.com/sqlserver/2004/07/adventure-works/ProductModelManuInstructions";
     for $i in (/AWMI:root/AWMI:Location)[1]
     return 
       <Location LocationID="{ ($i/@LocationID) }"
                   LotSize  = "{  number($i/@LotSize) }"
                   LotSize2 = "{ number($i/@LotSize) + 1 }"
                   LotSize3 = "{ number($i/@LotSize) + 2 }" >
                   
       </Location>
') as Result
FROM Production.ProductModel
where ProductModelID=7

C.Obliczanie wartości prawdziwość predykatu

The following query retrieves the <Picture> elements for a product model where the picture size is "small":

SELECT CatalogDescription.query('
     declare namespace PD="https://schemas.microsoft.com/sqlserver/2004/07/adventure-works/ProductModelDescription";
     for $P in /PD:ProductDescription/PD:Picture[PD:Size eq "small"]
     return
           $P
    ') as Result
FROM Production.ProductModel
where ProductModelID=19

Because both the operands to the eq operator are atomic values, the value operator is used in the query.You can write the same query by using the general comparison operator ( = ).