为 HTML 输出中的颜色编码表格式化 SQL Server 查询
Posted
技术标签:
【中文标题】为 HTML 输出中的颜色编码表格式化 SQL Server 查询【英文标题】:Formatting SQL Server Query for color coded table in HTML output 【发布时间】:2021-06-14 16:06:40 【问题描述】:我正在编写一个 SQL Server 查询,该查询从一系列计算机中查询硬盘信息,并突出显示容量不足 20% 的驱动器。我想让那些容量为 10% 或更少的黄色。我在查询中使用了 case 语句,但语法有问题。
CASE
WHEN ((UsedSpace/CAST(TotalSpace as decimal(18,2))) > 0.9)
THEN CAST('''<font color="yellow">'' + [FreeSpace] + ''</font>''' AS varchar(150))
ELSE [FreeSpace]
END AS 'td',
这会导致错误:
将 varchar 值 ''' + [FreeSpace] + ''' 转换为数据类型 int 时转换失败。
【问题讨论】:
这样的意思是CASE表达式的输出是一个整数值。您有一个返回 CHAR 数据的 CASE 条件。确保每个 WHEN 子句返回字符数据 【参考方案1】:您正在混合数据类型... INT 和字符串
假设您正在创建 html 表,一种选择是使用 concat()
和 XML。 concat()
是一种混合数据类型的简单方法,无需担心转换。
示例
Declare @yourtable table (UsedSpace int,TotalSpace int,FreeSpace int)
Insert into @YourTable values
( 95,100,5)
,( 80,100,20)
Select
CASE WHEN ((UsedSpace/CAST(TotalSpace as decimal(18,2))) > 0.9)
THEN convert(XML,concat('<font color="yellow">',[FreeSpace],'</font>'))
ELSE concat('',FreeSpace) END as 'td'
From @YourTable
For XML Path('tr')
结果
<tr>
<td>
<font color="yellow">5</font>
</td>
</tr>
<tr>
<td>20</td>
</tr>
【讨论】:
@alcor8 总是乐于提供帮助以上是关于为 HTML 输出中的颜色编码表格式化 SQL Server 查询的主要内容,如果未能解决你的问题,请参考以下文章