1

我正在使用 SQL 更新查询 [在 powershell 脚本中] 来更新列中存在的机器名称。

列值存储为 URL。所以机器名是字符串的一部分。

(列名:URL 示例列值:“http://Machine1:80/Impl100/Core/Data/Config.0”)

我正在使用以下查询进行更新。

$UpdateQuery="UPDATE [$DatabaseName].[dbo].[$TableName] 
SET $columnName=Replace("$ColumnName", '$OldMachineName', '$NewMachineName');"

假设我的旧机器名称是“Machine1”,我将替换为“AppMachine1”。如果我执行脚本,它将更新“AppMachine1”。但是,如果我第二次执行该脚本,它会将其更新为“AppAppMachine1”,因为 Machine1 是 AppMachine1 的一部分。

是否可以在更新前获取列值并检查机器名称?

这个怎么做?

4

2 回答 2

1

包括双前导正斜杠:

 ... -replace '//machine1','//AppAppMachine1'

您还需要将带引号的变量放在双引号中。单引号禁用变量扩展,因此变量不会被其值替换。

这是双重替换的示例:

PS> $url = 'http://machine1:80/Impl100/Core/Data/Config.0'
PS> $url -replace '//machine1','//AppAppMachine1' -replace '//machine1','//AppAppMachine1'

http://AppAppMachine1:80/Impl100/Core/Data/Config.0
于 2012-07-24T12:36:18.447 回答
1

尝试这个

$UpdateQuery="UPDATE [$DatabaseName].[dbo].[$TableName] 
SET $columnName=Replace("$ColumnName", '$OldMachineName', '$NewMachineName')
WHERE "$ColumnName" <> '$NewMachineName';"
于 2012-07-24T09:32:16.007 回答