【问题标题】:How to suppress sql query output and show only the number of rows如何抑制sql查询输出并仅显示行数
【发布时间】:2019-06-25 07:20:50
【问题描述】:

我有以下 powershell 命令,它显示 sql 表中的行数。这可行,但它还包括标题:

Invoke-Sqlcmd -ServerInstance "01-SQL1\INSTANCE22" -Database master -Query "select Count(*) from dbo.mytable"

我得到的输出是:

Column1
-------    
2450 <= This line is actually displayed under Column1 on a separate line. I just couldn't get it to display properly here.

我需要的唯一输出是如果行数大于 X 行,则显示行数,否则打印“找到的行数少于 5000 行”。我该怎么做?

【问题讨论】:

  • | Select-Object -ExpandProperty Column1 的管道 - 或 - 将您的命令括在括号中并附加 (Invoke-Sqlcmd ...).Column1

标签: sql-server powershell invoke-sqlcmd


【解决方案1】:

您正在尝试将数字与文本混合,因此最好的办法是将该值返回到一个变量中,然后设置一个规则以显示您想要的任何内容:但是,您也可以使用纯 SQL 来完成此操作:

SELECT CASE
           WHEN COUNT(*) < 5000 THEN
               'Less than 5,000'
           ELSE
               CAST(COUNT(*) AS VARCHAR(10))
       END
FROM [dbo].[myTable] ;

【讨论】:

  • 你如何把它和我包含的命令放在一起,这样它就成了一个衬里......也许是@"和"@?
  • 你可以去掉空格 - 我只是添加它以便更容易看到发生了什么:SELECT CASE WHEN COUNT() ) AS VARCHAR(10)) END FROM [dbo].[myTable] ;
  • 仅供参考,SQL ANSII 标准是不需要空格以外的空格:任何 SQL 代码都可以缩减为一行,只要您没有两个破折号用于注释(--)。如果您确实需要注释,请改用 /*...*/ 多行注释格式。
【解决方案2】:

从表中选择 count(*) 作为总数

【讨论】:

  • 谢谢,但我已经有了 Count(*),所以我不确定你的意思。我还需要它仅在大于 X 行数时才显示它。
  • select case when Count()>x then Count() Else NULL End you show try this
【解决方案3】:

这应该回答你的问题。 sqlcmd -S localhost -d master -Q "if ((select Count(*) from spt_values)

ps 版本:只是查询不同

Invoke-Sqlcmd -ServerInstance "localhost" -Database master -Query "if ((select Count(*) from spt_values)

【讨论】:

  • 我需要坚持使用 powershell 命令,所以我必须使用 Invoke-SqlCmd。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-10-11
  • 1970-01-01
相关资源
最近更新 更多