Udostępnij za pośrednictwem


concat funkcji (XQuery)

Akceptuje zero lub więcej ciągów jako argumenty i zwraca ciąg utworzony przez wartości każdej z tych argumentów.

Składnia

fn:concat ($string as xs:string?
           ,$string as xs:string?
           [, ...]) as xs:string

Argumenty

  • $string
    Opcjonalny ciąg łączenia.

Uwagi

Funkcja wymaga co najmniej dwa argumenty.Jeśli argument jest pusty sekwencji, jest traktowana jako ciąg znaków o zerowej długości.

Przykłady

W tym temacie przedstawiono przykłady XQuery przeciwko wystąpień XML, które są przechowywane w różnych xml wpisz kolumn w AdventureWorks2008R2 przykładowej bazy danych.Aby uzyskać omówienie tych kolumn, zobacz XML reprezentacji typu danych w bazie danych AdventureWorks2008R2.

A.Za pomocą funkcja XQuery concat() ciągów

Dla określonego modelu produktu ta kwerenda zwraca ciąg utworzony poprzez konkatenację okres gwarancji i opis gwarancji.W dokumencie opis katalogu <Warranty> element składa się z <WarrantyPeriod> i <Description> elementów podrzędność.

WITH XMLNAMESPACES (
'https://schemas.microsoft.com/sqlserver/2004/07/adventure-works/ProductModelDescription' AS pd,
'https://schemas.microsoft.com/sqlserver/2004/07/adventure-works/ProductModelWarrAndMain' AS wm)
SELECT CatalogDescription.query('
    <Product 
        ProductModelID= "{ (/pd:ProductDescription/@ProductModelID)[1] }"
        ProductModelName = "{ sql:column("PD.Name") }" >
        { 
          concat( string((/pd:ProductDescription/pd:Features/wm:Warranty/wm:WarrantyPeriod)[1]), "-",
                  string((/pd:ProductDescription/pd:Features/wm:Warranty/wm:Description)[1])) 
         } 
     </Product>
 ') as Result
FROM Production.ProductModel PD
WHERE  PD.ProductModelID=28;

Poniższe z poprzedniej kwerendy:

  • W klauzula SELECT jest CatalogDescription xml typu kolumna.Dlatego query(), metoda (typ danych XML), Instructions.query(), jest używany.Instrukcja XQuery jest określony jako argument do metoda kwerendy.

  • Dokument, wobec którego jest wykonywana kwerenda używa nazw.Dlatego nazw słowo kluczowe jest używany do definiowania prefiks obszaru nazw.Aby uzyskać więcej informacji, zobacz XQuery prologu.

Jest to wynikiem:

<Product ProductModelID="28" ProductModelName="Road-450">1 year-parts and labor</Product>

Poprzednie kwerenda pobiera informacje dotyczące określonego produktu.Następująca kwerenda pobiera te same informacje dla wszystkich produktów, dla których opisy wykazu XML są przechowywane.Exist() metoda xml typ danych w klauzula WHERE zwraca wartość PRAWDA, jeśli dokument XML w wierszach ma <ProductDescription> element.

WITH XMLNAMESPACES (
'https://schemas.microsoft.com/sqlserver/2004/07/adventure-works/ProductModelDescription' AS pd,
'https://schemas.microsoft.com/sqlserver/2004/07/adventure-works/ProductModelWarrAndMain' AS wm)

SELECT CatalogDescription.query('
    <Product 
        ProductModelID= "{ (/pd:ProductDescription/@ProductModelID)[1] }" 
        ProductName = "{ sql:column("PD.Name") }" >
        { 
          concat( string((/pd:ProductDescription/pd:Features/wm:Warranty/wm:WarrantyPeriod)[1]), "-",
                  string((/pd:ProductDescription/pd:Features/wm:Warranty/wm:Description)[1])) 
         } 
     </Product>
 ') as Result
FROM Production.ProductModel PD
WHERE CatalogDescription.exist('//pd:ProductDescription ') = 1

Należy zauważyć, że wartość logiczna zwrócony przez exist() metoda xml typu jest porównywana z 1.

Ograniczenia wdrażania

Są następujące ograniczenia:

  • Concat() funkcja w programie SQL Server akceptuje tylko wartości typu xs:ciąg.Inne wartości musi wyraźnie być rzutowane na xs:ciąg lub xdt:untypedAtomic.

Zobacz także

Odwołanie