测试为空后,Powershell 替换失败

标签 powershell

我正在从数据库中提取数据(专门使用 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/

相关文章:

powershell - powershell:如何评估从文件读取的字符串

c# - O365 通过 ASP.NET MVC 中的 PowerShell 3 : MicrosoftOnlineException was thrown

powershell - 使用 powershell 在现有 CSV 中添加列 CSV

powershell - PowerShell 中根据版本号排序

powershell - 如何在Power Shell中将COM +服务器类型应用程序的标识设置为Network Service

powershell - 变量内每行的Powershell

powershell - 为什么TFS历史记录命令在工作区命令有效时返回 “TF30063: You are not authorized to access …”

azure - 用于从所有资源组获取标签信息的Powershell脚本

powershell - Invoke-WebRequest - 属性显示为具有值,但以某种方式访问​​时为空

powershell - 将应答文件与 PowerShell 脚本一起使用