PowerShell中SQL查询空字符串替换为指定符号的方法
SQL查询修改方案:将空字符串LAST_NAME替换为'-'
针对你遇到的LAST_NAME为空字符串导致数组异常的问题,可以通过在SQL查询中添加字符串处理逻辑,把空字符串替换为'-',以下是具体修改方案:
修改后的SQL核心逻辑
可以通过两种方式实现需求:
方式1:使用CASE语句
直接判断LAST_NAME是否为空字符串,是则返回'-',否则返回原字段值:
SELECT CASE WHEN LAST_NAME = '' THEN '-' ELSE LAST_NAME END AS LAST_NAME
方式2:使用COALESCE+NULLIF组合
先将空字符串转换为NULL,再用COALESCE替换为'-',写法更简洁:
SELECT COALESCE(NULLIF(LAST_NAME, ''), '-') AS LAST_NAME
完整的PowerShell代码片段
替换原SQL语句部分即可:
foreach ($myDb in $dbsArr) { $SqlCmd.CommandText = "use [$myDb] Select COALESCE(NULLIF(LAST_NAME, ''), '-') AS LAST_NAME from test.[USER] Where ID = (Select Test_User_ID from test.UPGRADE Where KEYED_NAME Like '%$db%' and STATE = 'Active')" } while ($objReader.read()) { foreach ($dbValue in $objReader.GetValue(0)) { $dbsArr += @($dbValue ) } }
说明
- 两种方式都能实现将空字符串的LAST_NAME替换为'-',同时保留非空的原始值
- 注意区分空字符串('')和NULL:你的场景是空字符串,所以不能直接用ISNULL(ISNULL只处理NULL值)
内容的提问来源于stack exchange,提问作者Sergio Ramos
相关产品推荐
相关产品推荐

