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 |
---|---|
< |
< |
> |
> |
& |
& |
" |
" |
&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 > 50000 and < 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>€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.