Udostępnij za pośrednictwem


concat funkcja (XQuery)

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

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

Argumenty

  • $string
    Opcjonalny ciąg, aby złączyć.

Remarks

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

Przykłady

W tym temacie przedstawiono przykłady XQuery przed XML wystąpienia, które są przechowywane w różnych XML kolumn typu AdventureWorks przykładowej bazy danych.Aby uzyskać ogólne informacje o tych kolumn zobacz xml Data Type Representation in the AdventureWorks Database.

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 wykazu <Warranty> element składa się z <WarrantyPeriod> i <Description> elementy 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

Pierwszy przycisk jest przyciskiem domyślnym.

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

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

To jest wynik:

<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 znajdują się opisy wykazu XML.The exist() metoda of the xml data type in the WHERE klauzula returns True if the XML document in the rows has a <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 logiczny, zwracany przez EXIST() Metoda XML typu jest porównywana z 1.

defaultButton

Ograniczenia są następujące:

  • The concat() funkcja in SQL Server only accepts values of type xs:ciąg.Inne wartości musi jawnie można rzutować na xs:ciąg lub xdt:untypedAtomic.