我有一个通过Powershell执行的条件SQL语句,它根据行的存在插入或更新数据库。我正在使用此脚本来清点软件。但是,脚本运行时会出现大量安全更新和修补程序,并且我希望将这些记录排除在SQL数据库中,因为它们不符合应用程序的条件。我尝试过几种不同的方式使用NOT LIKE子句,但我无法使其工作。我也尝试过使用EXCEPT。任何意见是极大的赞赏!我的上一次语法尝试下面的代码:
Invoke-Sqlcmd -ServerInstance "$SQLServer" -Database "$SqlDB" -query "UPDATE $SoftwareTable
SET name = N'$($CSVAppName -replace "'", "''")',
version = N'$($CSVVersion -replace "'", "''")',
product_id = N'$($CSVAppID -replace "'", "''")',
arch = N'$($CSVArch -replace "'", "''")'
WHERE product_id = '$CSVAppIDgo'
WHERE name not like '%hotfix%' AND '%security update%';
IF @@ROWCOUNT=0
INSERT INTO $SoftwareTable (name, version, product_id, arch)
VALUES (N'$($CSVAppName -replace "'", "''")', N'$($CSVVersion -replace "'", "''")', N'$($CSVAppID -replace "'", "''")', N'$($CSVArch -replace "'", "''")')
WHERE name not like '%hotfix%' AND '%security update%'"
}
答案 0 :(得分:0)
Invoke-Sqlcmd -ServerInstance "$SQLServer" -Database "$SqlDB" -query "UPDATE $SoftwareTable
SET name = N'$($CSVAppName -replace "'", "''")',
version = N'$($CSVVersion -replace "'", "''")',
product_id = N'$($CSVAppID -replace "'", "''")',
arch = N'$($CSVArch -replace "'", "''")'
WHERE product_id = '$CSVAppIDgo'
and name not like '%hotfix%'
AND name not like '%security update%';
IF @@ROWCOUNT=0
INSERT INTO $SoftwareTable (name, version, product_id, arch)
VALUES (N'$($CSVAppName -replace "'", "''")', N'$($CSVVersion -replace "'", "''")', N'$($CSVAppID -replace "'", "''")', N'$($CSVArch -replace "'", "''")')
WHERE name not like '%hotfix%'
AND name not like '%security update%'"
}