0
選擇我有一個表在SQL Server 2008具有以下結構:從XML與未知結構
id = int
numero = int
datos = xml
[other_misc_fields]
你可以看到桌子上這sql fiddle一些示例數據。正如您在鏈接上看到的,數據庫(data)是一個XML。這個XML沒有已知的結構。我所知道的是,root是「lote」,並且每個字段都有一個屬性「title」,它是該字段的「顯示名稱」。我希望能沿着這條線
id | numero | display_name_field_1 | display_name_field_2 | display_name_field_3
1 | 23 | value_field_1 | value_field_2 | value_field_3
使用一些dynamic sql(從another so answer)我能得到每個節點的值查詢的東西,但我無法弄清楚如何使用其重命名標題屬性:
select @SQL = 'select '+stuff(
(
select ',T.N.value('''+T.N.value('local-name(.)', 'sysname')+'[1]'', ''varchar(max)'') as '+T.N.value('local-name(.)', 'sysname')
from @XML.nodes('/*[local-name(.)=sql:variable("@KnownName")]/*') as T(N)
for xml path(''), type
).value('.', 'nvarchar(max)'), 1, 1, '')+
' from @XML.nodes(''/*[local-name(.)=sql:variable("@KnownName")]'') as T(N)
其中@KnownName是「lote」。
如何修改該查詢,使字段重命名爲該節點的@title屬性?或者,或者,有沒有更好的方法來做到這一點比動態SQL?