【问题标题】:TSQL (SSMS) conditionally display result of query only conditionallySQL (SSMS) 有条件地显示查询结果
【发布时间】:2019-03-09 21:58:38
【问题描述】:

是否可以有条件地在 TSQL (SSMS) 窗口中的查询结果窗口中显示?

例如,显示列标题和结果:

从 [ourDatabase].[dbo].[ourTable] 中选择 COUNT(1) 作为 ourCount

> 0

注意:我们使用 SQL Server 2008,r-2

这是在具有许多结果的更大查询系统的上下文中。如果这个特定查询的值为零,我不想弄乱结果。当然,这个概念可以推广到其他情况。

所以我正在监视查询输出,并且可以将结果视为对我自己的“警告”(非正式地)。

【问题讨论】:

  • SSMS 只是一个客户端工具。它不会影响查询的执行方式或它们产生的内容。至于过滤数据,可以通过 SELECT 语句的 WHERE 子句完成,如果要按聚合过滤,则使用 HAVING() 子句。
  • 我认为这是XY Problem。你为什么要努力完成你要求做的事情?就其本身而言,它没有多大意义。
  • Richard 的回答会为您做到这一点,但出于故障排除的目的,您可能不想知道一个表是空的,特别是如果期望它不会是空的?我得到了混乱的东西,但是具有一致的输出也具有可读性价值。
  • 听起来你已经想通了!跟着它跑。
  • @JosephDoggie 有比在 SSMS 中执行脚本更好的监控选项。 SSMS 本身有几个监控报告和仪表板。 SQL Operations Studio(现在称为 Azure Data Studio)允许您非常轻松地将查询转换为图表和仪表板。检查例如Customizing Dashboards。已经有几个插件可用于监控,包括一个显示通过运行 Brent Ozar 的 First Responder Kit 收集的统计信息的插件

标签: tsql sql-server-2008-r2 ssms


【解决方案1】:

这会将结果推送到变量中,然后仅在大于零时才显示,您也可以使用PRINT等。

DECLARE @Count INT;
SELECT @Count = COUNT(1) AS ourCount FROM [ourDatabase].[dbo].[ourTable];
IF @Count > 0
BEGIN
    SELECT @Count;
END;

如果答案是

SET NOCOUNT ON;

...在脚本的顶部,但记得添加:

SET NOCOUNT OFF;

【讨论】:

  • 是的,它有效。对于那些不是来自 C 语言家族的人,';'在声明语句中是可选的。 COUNT(1) 真的比 COUNT(*) 更有效吗?我想是的,这当然是我使用的,但我觉得它的可读性较差,对于这样一个小问题有很多话要说!
猜你喜欢
  • 2013-04-20
  • 1970-01-01
  • 2020-08-28
  • 2018-01-19
  • 1970-01-01
  • 2012-05-02
  • 1970-01-01
  • 1970-01-01
  • 2019-04-29
相关资源
最近更新 更多