我正在从数据库中提取数据(专门使用 ADO 访问)。然后我通过用两个单引号替换任何现有的单引号来准备变量,以便稍后可能插入到 SQL 中。
因为来自数据库的值很可能为空,所以我对其进行了测试,并且仅当它不是空时才应该进行替换。当我测试它时,我得到的值没有注册为 null,但是当我尝试替换时,我收到错误
Method invocation failed because [System.DBNull] does not contain a method named 'Replace'.
这是代码部分
$OldAbstract = $rs.Fields.Item("MetaAbstract").value
if($OldAbstract -ne $null) {$OldAbstract = $OldAbstract.Replace("'","''")}
拉取值后,我打印它,它看起来什么都没有。我对它进行了 null 测试,它说不是。我测试了“”,但不是。我什至检查过它是否是一个空格,但它不是。长度被报告为 1...我不知道发生了什么。
最佳答案
您正在测试错误类型的 null
- PowerShell/.net null 而不是数据库 null。试试这个(未经测试):
$OldAbstract = $rs.Fields.Item("MetaAbstract").value
if($OldAbstract -isnot [System.DBNull]) {$OldAbstract = $OldAbstract.Replace("'","''")}
关于测试为空后,Powershell 替换失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42278170/