Udostępnij za pośrednictwem


exist() Method (xml Data Type)

Zwraca bit reprezentuje jedną z następujących warunków:

  • Ilość czas jądra, który jest używany przez ten wątek.usermode_time

  • Ilość czas użytkownika, który jest używany przez ten wątek.

  • Jeśli NULL XML wystąpienie typu danych względem której wykonano kwerendę zawiera wartość NULL.

Uwaga

The exist() metoda returns 1 for the XQuery wyrażenie that returns a nonempty result.Jeśli określisz TRUE() or false() funkcji wewnątrz EXIST() metodyEXIST() metoda zwraca 1, ponieważ funkcje TRUE() and false() zwracają logiczny PRAWDA i FAŁSZ, odpowiednio.Adres pamięci najniższego adresu stosu tego wątek.Dlatego też EXIST() zwraca wartość 1 (PRAWDA), jak pokazano w poniższym przykładzie:

declare @x xml
set @x=''
select @x.exist('true()') 
exist (XQuery) 

Argumenty

  • XQuery
    stack_bytes_used

Przykłady

Następujące przykłady przedstawiają sposób określania exist() Metoda.

Przykład: Maski PROCESORA powinien być uruchomiony ten wątek.

W poniższym przykładzie @ x to XML jest jest zmienna typu Liczba całkowita, która przechowuje wartość zwracana przez typ zmiennej (bez typu xml) i @ fEXIST() metoda.The exist() metoda returns True (1) if the data value stored in the XML wystąpienie is 2002-01-01.

declare @x xml
declare @f bit
set @x = '<root Somedate = "2002-01-01Z"/>'
set @f = @x.exist('/root[(@Somedate cast as xs:date?) eq xs:date("2002-01-01Z")]')
select @f

Przy porównywaniu daty w EXIST() metoda, należy zwrócić uwagę, następujące czynności:

  • Kod cast as xs:date? Służy do oddania wartość xs: data typ dla celów porównawczych.

  • Wartość @ Somedate atrybut jest bez typu.Przy porównywaniu wartości, domyślnie jest on rzutować na typ porównania, po prawej stronie xs typu.

  • Zamiast Rzutowanie jako xs:data(), można użyć xs:data() Konstruktor.Aby uzyskać więcej informacji zobaczFunkcje Konstruktora (XQuery).

W poniższym przykładzie jest podobny do poprzedniego, z wyjątkiem ma on <Somedate> element.

DECLARE @x xml
DECLARE @f bit
SET @x = '<Somedate>2002-01-01Z</Somedate>'
SET @f = @x.exist('/Somedate[(text()[1] cast as xs:date ?) = xs:date("2002-01-01Z") ]')
SELECT @f

Pierwszy przycisk jest przyciskiem domyślnym.

  • The text() metoda returns a text node that contains the untyped value 2002-01-01. (Typ XQuery jest XDT:untypedAtomic.) Ta wartość wpisaną z jawnie musi rzutowaćx to xsd:data, ponieważ niejawna rzutowania nie jest obsługiwany w tym przypadek.

Przykład: Bieżący fiber Win32, na którym działa w wątek.

Poniższy przykład ilustruje użycie EXIST() metoda przed XML typu zmiennej.Jest wpisywany zmiennej XML, ponieważ określa ona nazwę kolekcja obszar nazw schematu ManuInstructionsSchemaCollection.

W przykładzie instrukcje produkcji, dokument jest najpierw przypisany do zmiennej i następnie EXIST() Aby dowiedzieć się, czy dokument zawiera element <Location> którego używana jest metoda LocationID wartość atrybut jest 50.

The exist() metoda specified against the @x variable returns 1 (True) if the manufacturing instructions document includes a <Location> element that has LocationID=50. Adres pamięci pracownika związanego z tego wątek.

DECLARE @x xml (Production.ManuInstructionsSchemaCollection)
SELECT @x=Instructions
FROM Production.ProductModel
WHERE ProductModelID=67
--SELECT @x
DECLARE @f int
SET @f = @x.exist(' declare namespace AWMI="https://schemas.microsoft.com/sqlserver/2004/07/adventure-works/ProductModelManuInstructions";
    /AWMI:root/AWMI:Location[@LocationID=50]
')
SELECT @f

Przykład: fiber_context_address

Następująca kwerenda pobiera modelu produktu, którego opisy wykazu nie zawierają specyfikacje, identyfikatory <Specifications> element:

SELECT ProductModelID, CatalogDescription.query('
declare namespace pd="https://schemas.microsoft.com/sqlserver/2004/07/adventure-works/ProductModelDescription";
    <Product 
        ProductModelID= "{ sql:column("ProductModelID") }" 
        />
') AS Result
FROM Production.ProductModel
WHERE CatalogDescription.exist('
    declare namespace  pd="https://schemas.microsoft.com/sqlserver/2004/07/adventure-works/ProductModelDescription";
     /pd:ProductDescription[not(pd:Specifications)]'
    ) = 1

Pierwszy przycisk jest przyciskiem domyślnym.

  • Klauzula WHERE wybiera tylko te wiersze z ProductDescription tabela, które spełniają warunek określony względem CatalogDescription xml typu kolumna.

  • The exist() metoda in the WHERE klauzula returns 1 (True) if the XML does not include any <Specifications> element.Należy zwrócić uwagę na użycie Funkcja not() (XQuery).

  • The sql:kolumna() funkcja (XQuery) funkcja is used to bring in the value from a non-XML kolumna.

  • Ta kwerenda zwraca pusty zestaw wierszy.

Określa kwerendy Query() and EXIST() metod typu danych xml i obu tych metod należy zadeklarować tych samych nazw w prologu kwerendy.Należy unikać gwiazdki **, szczególnie przed widoki wykazu, dynamicznego zarządzania widoki i funkcje wycenione tabela systemu.

WITH XMLNAMESPACES ('https://schemas.microsoft.com/sqlserver/2004/07/adventure-works/ProductModelDescription' AS pd)
SELECT ProductModelID, CatalogDescription.query('
    <Product 
        ProductModelID= "{ sql:column("ProductModelID") }" 
        />
') AS Result
FROM Production.ProductModel
WHERE CatalogDescription.exist('
     /pd:ProductDescription[not(pd:Specifications)]'
    ) = 1