Udostępnij za pośrednictwem


Wyrażenia podstawowe (XQuery)

Wyrażenia podstawowe XQuery zawierać literały, odwołania do zmiennej, kontekst element wyrażenia, konstruktorów i wywołania funkcja.

Literały ciągów

Literały XQuery może być literałów numerycznych lub ciąg znaków.Literał ciąg znaków może być wstępnie zdefiniowane obiekt odwołania, a obiekt odwołanie jest ciąg znaków.Ciąg rozpoczyna się ze znakiem handlowe i reprezentuje pojedynczy znak, który w przeciwnym razie może mieć istotność składni.Wstępnie zdefiniowane są następujące obiekt odwołania dla XQuery.

Odwołanie do obiekt

Reprezentuje

<

<

&gt;

>

&amp;

&

&quot;

"

&APOS;

'

Literał ciąg znaków może również zawierać odwołanie do znaku, XML-odwołanie do znaku Unicode, który jest identyfikowany przez jego punkt kodowy dziesiętną lub szesnastkową.Na przykład euro symbol może być reprezentowany przez odwołanie do znaku"&# 8364; ".

Uwaga

SQL Server używa XML w wersja 1.0 jako podstawy dla analizy.

Przykłady

Poniższe przykłady ilustrują użycie literałów, a także odwołania do obiektu i znaków.

Ten kod zwraca błąd, ponieważ <' i '> znaki mają specjalne znaczenie.

DECLARE @var XML
SET @var = ''
SELECT @var.query(' <SalaryRange>Salary > 50000 and < 100000</SalaryRange>')
GO

Czy użyć odwołania do obiekt kwerendy działa.

DECLARE @var XML
SET @var = ''
SELECT @var.query(' <SalaryRange>Salary &gt; 50000 and &lt; 100000</SalaryRange>')
GO

Poniższy przykład ilustruje użycie jako odwołanie do znaku do reprezentowania symbol waluty euro.

DECLARE @var XML
SET @var = ''
SELECT @var.query(' <a>&#8364;12.50</a>')

Jest to wynik.

<a>€12.50</a>

W poniższym przykładzie kwerendy są rozdzielone apostrofy.Dlatego apostrof w wartości ciąg jest reprezentowany przez dwa sąsiednie apostrofy.

DECLARE @var XML
SET @var = ''
SELECT @var.query('<a>I don''t know</a>')
Go

Jest to wynik.

<a>I don't know</a>

Wbudowanych funkcji logicznych true() i false(), można użyć do reprezentowania wartości logiczne, jak pokazano w poniższym przykładzie.

DECLARE @var XML
SET @var = ''
SELECT @var.query('<a>{true()}</a>')
GO

Konstruktor elementu bezpośredniego Określa wyrażenie w nawiasy klamrowe.Zastępuje to jego wartość w wynikowym pliku XML.

Jest to wynik.

<a>true</a>

Zmienna odwołania

Odwołanie do zmiennej w XQuery jest QName, poprzedzone znakiem $.Ta implementacja obsługuje tylko unprefixed zmiennej odwołania.Na przykład poniższa kwerenda definiuje zmiennej $i w wyrażeniu FLWOR.

DECLARE @var XML
SET @var = '<root>1</root>'
SELECT @var.query('
 for $i in /root return data($i)')
GO

Następująca kwerenda nie będzie działać, ponieważ prefiks obszaru nazw jest dodawany do nazwy zmiennej.

DECLARE @var XML
SET @var = '<root>1</root>'
SELECT @var.query('
DECLARE namespace x="http://X";
for $x:i in /root return data($x:i)')
GO

Można użyć sql:variable() rozszerzenia funkcja do odwoływania się do zmiennych SQL, jak pokazano w następującej kwerendzie.

DECLARE @price money
SET @price=2500
DECLARE @x xml
SET @x = ''
SELECT @x.query('<value>{sql:variable("@price") }</value>')

Jest to wynik.

<value>2500</value>

defaultButton

Są to ograniczenia implementacji:

  • Zmienne o prefiksów obszaru nazw nie są obsługiwane.

  • Importowanie modułu nie jest obsługiwana.

  • Zewnętrznych deklaracji zmiennych nie są obsługiwane.Rozwiązanie to jest użycie funkcja SQL:variable().

Kontekst element wyrażenia

Kontekst jest przetwarzana w kontekście wyrażenie ścieżka element.Jest on zainicjowany w wystąpieniu typ danych wartości NULL nie XML z węzłem dokumentu.Można je zmienić także poprzez nodes() Metoda w kontekście wyrażenia XPath lub predykaty [].

Element kontekstu jest zwracany przez wyrażenie, które zawiera kropki (.).Na przykład poniższa kwerenda ocenia każdego elementu <a> obecność atrybut attr. Jeśli atrybut jest obecny, zwracany jest element.Należy zauważyć, że warunek w predykacie Określa, że węzeł kontekstu jest określony przez jednego okresu.

DECLARE @var XML
SET @var = '<ROOT>
<a>1</a>
<a attr="1">2</a>
</ROOT>'
SELECT @var.query('/ROOT[1]/a[./@attr]')

Jest to wynik.

<a attr="1">2</a>

Wywołania funkcja

You can call built-in XQuery functions and the SQL Serversql:variable() and sql:column() functions.Aby uzyskać listę zaimplementowane funkcje Zobacz Funkcje XQuery przed typ danych xml.

defaultButton

Są to ograniczenia implementacji:

  • deklaracja funkcja w prologu XQuery nie jest obsługiwana.

  • Funkcja importowania nie jest obsługiwana.

See Also

Concepts