0

SQLServer2008テーブルに対して次のxqueryがあります。

declare @tableName sysname = 'tableName'
declare @colNames xml = (select COLUMN_NAME from INFORMATION_SCHEMA.columns where TABLE_NAME = @tableName for xml path(''), elements)
select @colNames.query('<html><body>
<table>
<tr>
{
    for $c in /COLUMN_NAME
    return data($c)[1]
}
</tr>
</table>
</body></html>
')

ただし、次のxmlを返します。

<html>
  <body>
    <table>
      <tr>col1col2col3col4col5</tr>
    </table>
  </body>
</html>

そして期待される結果は

<html>
  <body>
    <table>
      <tr><th>col1</th><th>col2</th><th>col3</th><th>col4</th><th>col5</th></tr>
    </table>
  </body>
</html>

に変更return data($c)[1]してみましたconcat("<th>", data($c)[1], "</th>")。しかし、<とはとに>逃げましたか?&lt;&gt;

4

2 に答える 2

2
for $c in /COLUMN_NAME
return element th { data($c)[1] }

また

for $c in /COLUMN_NAME
return <th>{ data($c)[1] }</th>
于 2013-03-15T15:31:36.100 に答える
1

または、クエリで直接実行することもできます。

select
  (
  select COLUMN_NAME as '*'
  from INFORMATION_SCHEMA.columns 
  where TABLE_NAME = @tableName
  for xml path('th'), root('tr'), type
  ) as "table"
for xml path('body'), root('html')

また

select
  (
  select COLUMN_NAME as th
  from INFORMATION_SCHEMA.columns 
  where TABLE_NAME = @tableName
  for xml path(''), type
  ) as "html/body/table/tr"
for xml path('')
于 2013-03-15T15:40:24.477 に答える