Udostępnij przez


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

Literały XQuery może być liczbą lub ciąg literałów.Literał ciąg znaków może zawierać odwołań do obiekt wstępnie zdefiniowanych i sekwencja znaków jest odwołanie do obiekt.Sekwencja zaczyna się od znaku reprezentuje pojedynczy znak, który w przeciwnym razie może mieć istotność syntaktyczne.Poniżej przedstawiono odwołań do obiekt wstępnie zdefiniowane dla XQuery.

Odwołania do jednostki

Reprezentuje

<

<

&BT;

>

&amp;

&

&quot;

"

&APOS;

'

Literał ciąg znaków może także zawierać odwołanie do znaku, XML odwołanie do znaku Unicode, identyfikowaną przez jego punkt kodowy dziesiętną lub szesnastkową.Na przykład, Euro symbol może być reprezentowany przez odwołanie do znaku "&# 8364;".

Ostrzeżenie

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 obiekt i znak odniesienia.

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

Jeśli 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 znaków odniesienia do reprezentowania Euro symbol.

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

Jest to wynikiem.

<a>€12.50</a>

W poniższym przykładzie kwerenda jest rozdzielone apostrofów.Dlatego apostrof w wartości ciąg jest reprezentowany przez dwa apostrofy sąsiadujących.

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

Jest to wynikiem.

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

Wbudowane wartość logiczna funkcje, true() i false(), mogą być używane do reprezentowania wartość logiczna wartości, jak pokazano w następującym przykładzie.

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

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

Jest to wynikiem.

<a>true</a>

Odwołania do zmiennej

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

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 odnoszą się do zmiennych SQL, jak pokazano w następującej kwerendy.

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

Jest to wynikiem.

<value>2500</value>

Ograniczenia wdrażania

Są to ograniczenia implementacji:

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

  • Importowanie modułu nie jest obsługiwane.

  • Deklaracje zmiennych zewnętrznych nie są obsługiwane.Rozwiązanie to jest użycie sql:variable() funkcja.

Kontekst elementu wyrażenia

Kontekst jest element aktualnie przetwarzane w kontekście wyrażenie ścieżka.Jest inicjowana w typie danych XML not NULL wystąpienie z węzłem dokumentu.Może również zostać zmieniona przez nodes() metoda w kontekście wyrażenia XPath lub predykaty [].

Element kontekstu jest zwracany przez wyrażenie zawiera kropki (.).Na przykład, poniższa kwerenda ocenia każdy element <a> na 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 jeden okres.

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

Jest to wynikiem.

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

Wywołania funkcji

You can call built-in XQuery functions and the SQL Server sql:variable() and sql:column() functions.Zobacz listę zaimplementowane funkcje Funkcje XQuery przeciwko typ danych xml.

Ograniczenia wdrażania

Są to ograniczenia implementacji:

  • deklaracja funkcji w prologu XQuery nie jest obsługiwane.

  • Funkcja importowania nie jest obsługiwane.

Zobacz także

Koncepcje