所以我有以下选择语句:
SELECT sql1.ExtensionSettings
FROM (SELECT *
FROM [DBN-SERVER].[ReportServer].[dbo].[Subscriptions]
) sql1
WHERE report_oid = 'REPORT_ID' AND InactiveFlags = 0 AND
(sql1.ExtensionSettings LIKE '%<Value>EXCELOPENXML</Value>%') OR
(sql1.ExtensionSettings LIKE '%<Value>PDF</Value>%')
该语句将返回其中的40行:
"["<ParameterValues><ParameterValue><Name>TO</Name><Value></Value></ParameterValue><ParameterValue><Name>CC</Name><Value></Value></ParameterValue><ParameterValue><Name>IncludeReport</Name><Value>True</Value></ParameterValue><ParameterValue><Name>RenderFormat</Name><Value>EXCELOPENXML</Value></ParameterValue><ParameterValue><Name>Subject</Name><Value>AK Steel Daily Combined Order Status report for THE MILL STEEL CO-146159 (Excel version)</Value></ParameterValue><ParameterValue><Name>Comment</Name><Value>Attached is the daily order status report in Excel format</Value></ParameterValue><ParameterValue><Name>IncludeLink</Name><Value>False</Value></ParameterValue><ParameterValue><Name>Priority</Name><Value>NORMAL</Value></ParameterValue></ParameterValues>"]"
我需要提取标记中的所有内容...我知道这里没有显示任何内容,但是我必须删除电子邮件...没有人知道我要这样做40行吗?
答案 0 :(得分:2)
您的ntext
值是一个XML文档,因此您可以使用以下内容:
declare @data xml = '
<ParameterValues>
<ParameterValue>
<Name>IncludeReport</Name>
<Value>True</Value>
</ParameterValue>
<ParameterValue>
<Name>RenderFormat</Name>
<Value>EXCELOPENXML</Value>
</ParameterValue>
<ParameterValue>
<Name>Subject</Name>
<Value>
AK Steel Daily Combined Order Status report for
THE MILL STEEL CO-146159 (Excel version)
</Value>
</ParameterValue>
<ParameterValue>
<Name>Comment</Name>
<Value>Attached is the daily order status report in Excel format</Value>
</ParameterValue>
<ParameterValue>
<Name>IncludeLink</Name>
<Value>False</Value>
</ParameterValue>
<ParameterValue>
<Name>Priority</Name>
<Value>NORMAL</Value>
</ParameterValue>
</ParameterValues>'
SELECT c.value('(Name)[1]', 'nvarchar(max)') Name,
c.value('(Value)[1]', 'nvarchar(max)') Value
FROM @data.nodes('/ParameterValues/ParameterValue') t(c)
最终,您可以在输出中添加一些行键,然后将结果PIVOT