2011-12-15 21 views
2

我需要编写SQL语句,该语句将返回一个html表并将字体大小指定为其内容。创建HTML表并使用SQL FOR XML指定字体大小

我找到一些资料here。这tipic的Solusion介绍如何获取XML的元素,但没有属性:

<tr> 
    <th>Problem</th> 
    <th>Onset</th> 
    <th>Status</th> 
</tr> 
<tr> 
    <td>aaa</td> 
    <td>bbb</td> 
    <td>ccc</td> 
</tr> 

但我需要编写SQL语句,将返回这样的事情:

<tr> 
    <th><font size="1">Problem</font></th> 
    <th><font size="1">Onset</font></th> 
    <th><font size="1">Status</font></th> 
</tr> 
<tr> 
    <td><font size="1">aaa</font></td> 
    <td><font size="1">bbb</font></td> 
    <td><font size="1">ccc</font></td> 
</tr> 

回答

1

一对夫妇的想法。

1)在您的应用程序中将您的SQL数据转换为XML,而不是在查询中。 .NET/PHP/Java都可以将SQL数据作为XML获取。

2)使用XSL从数据库中转换XML为HTML

3)考虑使用,而不是<font>标签CSS。

table td { 
    FONT-SIZE: 12px; 
} 
+0

我想在我的.NET代码操作字符串并插入标签directy到生成的HTML。但是它太复杂了,因为我的存储过程可以根据输入值以不同格式返回值,并且使用.NET应用程序甚至不知道它接收到的是什么,它只知道这些数据可以在嵌入式浏览器中显示。 样式表对我来说是一个很好的解决方案! 非常感谢! – 2011-12-16 09:05:18

0
declare @T table 
(
    ProblemType varchar(10), 
    Onset date, 
    DiagnosisStatus varchar(10) 
) 

insert into @T values 
( 'Ulcer',  '01/01/2008', 'Active'), 
( 'Edema',  '02/02/2005', 'Active') 

select 
    (select 1 as 'th/@size', 'Problem' as th for xml path(''), type), 
    (select 1 as 'th/@size', 'Onset' as th for xml path(''), type), 
    (select 1 as 'th/@size', 'Status' as th for xml path(''), type) 
union all   
select 
    (select 1 as 'td/@size', p.ProblemType  as 'td' for xml path(''), type), 
    (select 1 as 'td/@size', p.Onset   as 'td' for xml path(''), type), 
    (select 1 as 'td/@size', p.DiagnosisStatus as 'td' for xml path(''), type) 
from @T p 
for xml path('tr') 

结果:

<tr> 
    <th size="1">Problem</th> 
    <th size="1">Onset</th> 
    <th size="1">Status</th> 
</tr> 
<tr> 
    <td size="1">Ulcer</td> 
    <td size="1">2008-01-01</td> 
    <td size="1">Active</td> 
</tr> 
<tr> 
    <td size="1">Edema</td> 
    <td size="1">2005-02-02</td> 
    <td size="1">Active</td> 
</tr> 
+1

嗨,Mikael Eriksson!谢谢您的回答。当我第一次遇到需要更改字体大小时,我正在考虑通过SQL FOR XML创建元素和属性。我认为你的答案是我的任务的直接解决方案。但之前的回答给我的印象甚至超过了我的预期。感谢你们所有人! – 2011-12-23 15:20:57