SQL"不喜欢' %%'"条件插入/更新

时间:2014-06-30 13:32:09

标签: mysql sql sql-server powershell

我有一个通过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%'"
}

1 个答案:

答案 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%'"
}