IF语句的SQL计数语法

时间:2019-02-21 18:44:07

标签: sql-server powershell

在PowerShell中,我试图编写一条if语句,以说明SQL Server的COUNT结果是否大于0。以下是我的答案:

$SqlConnection = New-Object System.Data.SqlClient.SqlConnection
$SqlConnection.ConnectionString = "Our Connection String"

$SqlCmd = New-Object System.Data.SqlClient.SqlCommand
$SqlCmd.CommandText = "SELECT COUNT(*) FROM dbo.Source WHERE SourceId IS NULL"
$SqlCmd.Connection = $SqlConnection

$SqlAdapter = New-Object System.Data.SqlClient.SqlDataAdapter
$SqlAdapter.SelectCommand = $SqlCmd

$DataSet = New-Object System.Data.DataSet

$Table = New-Object System.Data.DataTable

$SqlAdapter.Fill($Table) | Out-Null

if ($Table > 0) {
    Write-Output "The Count is greater than zero, please investigate"
}

我知道底部的if语句是错误的语法,并且我尝试了许多其他方式来表达它无济于事。我运行了脚本,没有任何错误,但是它只是完成了,什么也没有发生。我已经验证过,如果我从Out-Null行中删除了$SqlAdapter.Fill(),PowerShell将返回一个计数,因此我知道直到该点为止一切正常。

如果计数大于1,我只需要使它写入输出即可,在此SQL查询中肯定是这样。我将如何编写此if语句?

2 个答案:

答案 0 :(得分:2)

这应该做您想要的。

if ($Table.Column1 -gt 0) {
    Write-Output "The Count is greater than zero, please investigate"
}

由于您没有为数据表提供任何架构,因此计数将计入列名 Column1

答案 1 :(得分:0)

只需将$SqlAdapter.Fill($Table)的输出捕获到变量中,而不是通过Out-Null抑制它,然后检查该变量。

$cnt = $SqlAdapter.Fill($Table)

if ($cnt -gt 0) {
    # do stuff
}