我正在使用 Powershell 針對資料表撰寫一個簡單的名稱搜索。代碼如下:
$filter = "Name = '$aContact'"
$arow = $dt_resources.Select($filter)
這一切正常,除非 $aContact 包含單引號 (') 字符,如“O'Connor”。
任何理想的我該如何解決這個問題?
提前謝謝大家。
uj5u.com熱心網友回復:
Mathias R. Jessen已經對問題的解決方案發表了評論,但要將其作為答案,您可以'通過將它們加倍來逃避。我添加了一個簡單的函式,它也可以作為可能$null輸入的解決方法,因為在這種情況下,兩種方法 (.Contains和.Replace) 都會引發例外。
$dtt = [System.Data.DataTable]::new()
'Name', 'Value' | ForEach-Object{
$dtt.Columns.Add([System.Data.DataColumn]::new($_))
}
$row = $dtt.NewRow()
$row.Name = "O'Connor"
$row.Value = [random]::new().Next()
$dtt.Rows.Add($row)
$row = $dtt.NewRow()
$row.Name = "Doe"
$row.Value = [random]::new().Next()
$dtt.Rows.Add($row)
function CheckQuery {
param(
[parameter(ValueFromPipeline)]
[string]$Value
)
if($Value.Contains("'")) { return $Value.Replace("'","''") }
return $Value
}
"O'Connor", "Doe", $null | ForEach-Object {
$filter = "Name = '{0}'" -f ($_ | CheckQuery)
$dtt.Select($filter)
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/qianduan/405491.html
標籤:
