为 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 查询的主要内容,如果未能解决你的问题,请参考以下文章

python学习日记(格式化输出,初始编码,运算符)

大智慧如何给字符串输出不同颜色的字段

s-s-rS 数据透视表上的条件单元格格式

python全栈__format格式化输出while else逻辑运算符编码初识

Python基础学习1

vscode中 输入js语句,颜色是白色的?