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