次の方法で共有


名前をワイルドカード文字で指定した列

適用対象: SQL Server Azure SQL Database Azure SQL Managed Instance

列名にワイルドカード文字 (*) を指定した場合は、列名が指定されていない場合のように、列の内容が挿入されます。 xml 型以外の列の場合は、次の例で示すように内容がテキスト ノードとして挿入されます。

USE AdventureWorks2022;
GO
SELECT E.BusinessEntityID "@EmpID",
       FirstName "*",
       MiddleName "*",
       LastName "*"
FROM   HumanResources.Employee AS E
  INNER JOIN Person.Person AS P
    ON E.BusinessEntityID = P.BusinessEntityID
WHERE E.BusinessEntityID=1
FOR XML PATH;

結果を次に示します。

<row EmpID="1">KenJSánchez</row>

xml 型の列の場合、対応する XML ツリーが挿入されます。 たとえば次のクエリでは、Instructions 列に対する XQuery が返す XML を格納する列名として "*" を指定しています。

SELECT
       ProductModelID,
       Name,
       Instructions.query('declare namespace MI="https://schemas.microsoft.com/sqlserver/2004/07/adventure-works/ProductModelManuInstructions"
                /MI:root/MI:Location
              ') as "*"
FROM Production.ProductModel
WHERE ProductModelID=7
FOR XML PATH;

結果は次のとおりです。 XQuery が返した XML は、囲み要素なしで挿入されます。

<row>
  <ProductModelID>7</ProductModelID>
  <Name>HL Touring Frame</Name>
  <MI:Location LocationID="10">...</MI:Location>
  <MI:Location LocationID="20">...</MI:Location>
  ...
</row>

関連項目