Megosztás a következőn keresztül:


Függvények sztringértékeken – összefűzés

A következőkre vonatkozik:SQL Server

Nulla vagy több sztringet fogad el argumentumként, és az argumentumok értékeinek összefűzésével létrehozott sztringet ad vissza.

Szintaxis

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

Érvek

$string
Nem kötelező sztring összefűzni.

Megjegyzések

A függvényhez legalább két argumentum szükséges. Ha egy argumentum üres sorozat, akkor a függvény nulla hosszúságú sztringként kezeli.

Kiegészítő karakterek (helyettesítő párok)

Az XQuery-függvényekben a helyettesítő párok viselkedése az adatbázis kompatibilitási szintjétől és bizonyos esetekben a függvények alapértelmezett névterének URI-jától függ. További információt az SQL Server 2016 adatbázismotor-funkcióinak kompatibilitástörő változásairóltémakör "XQuery Functions Are Surrogate-Aware" című szakaszában talál. Lásd még ALTER DATABASE kompatibilitási szintjét (Transact-SQL) és rendezési és Unicode-támogatási.

Példák

Ez a témakör XQuery-példákat tartalmaz az AdventureWorks mintaadatbázis különböző xml- típusú oszlopaiban tárolt XML-példányokra.

Egy. A concat() XQuery függvény használata sztringek összefűzéséhez

Egy adott termékmodell esetében ez a lekérdezés a jótállási időszak és a jótállás leírásának összefűzésével létrehozott sztringet adja vissza. A katalógus leírási dokumentumában a <Warranty> elem <WarrantyPeriod> és <Description> gyermekelemekből áll.

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  
  

Jegyezze fel az előző lekérdezésben szereplő következőket:

  • A SELECT záradékban a CatalogDescription egy xml típusú oszlop. Ezért a query() metódus (XML-adattípus), Instructions.query() metódust használja. Az XQuery utasítás a lekérdezési metódus argumentumaként van megadva.

  • A lekérdezés végrehajtásához használt dokumentum névtereket használ. Ezért a névtér kulcsszó a névtér előtagjának meghatározására szolgál. További információ: XQuery Prolog.

Ez az eredmény:

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

Az előző lekérdezés egy adott termék adatait kéri le. Az alábbi lekérdezés ugyanazokat az adatokat kéri le az összes termékről, amelyekhez xml-katalógus-leírások vannak tárolva. A létezik() metódusa a WHERE záradékban szereplő xml adattípusnak igaz értéket ad vissza, ha a sorokban lévő XML-dokumentumnak van egy <ProductDescription> eleme.

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  
  

Vegye figyelembe, hogy a által visszaadott logikai értékxml típusú metódus 1-nel van összehasonlítva.

Megvalósítási korlátozások

Ezek a korlátozások:

  • Az SQL Server concat() függvénye csak xs:sztring típusú értékeket fogad el. Más értékeket explicit módon xs:string vagy xdt:untypedAtomic értékre kell leadni.

Lásd még:

XQuery-függvények xml adattípusú