You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

PowerShell遍历SQL数据时变量赋值异常问题求助

问题根源:混淆赋值运算符与比较运算符

你的代码核心错误是把赋值运算符=当成了比较运算符,导致判断逻辑完全混乱,还意外修改了原数据。

具体问题分析

在PowerShell中:

  • = 是赋值运算符,执行时会把右侧的值赋给左侧变量,然后返回赋值后的值。
  • 你写的if ($data.IsCurrent = 1),每次执行都会把$data.IsCurrent强制设为1,而这个赋值表达式返回的是1(PowerShell中视为$true),所以所有循环都会进入if分支,最后$Prim会被最后一行的Name覆盖,else/elseif永远不会触发。
  • 这也是为什么运行脚本后,$rows里的IsCurrent列全变成1或0的原因——你在判断时直接修改了原数据。

修正后的代码

PowerShell中判断相等要用-eq运算符,修改后的代码如下:

写法一修正:

foreach($data in $rows){
    if ($data.IsCurrent -eq 1) {
        $Prim = $data.Name
    }
    else { 
        $Sec = $data.Name 
    }
}

写法二修正:

foreach($data in $rows){
    if ($data.IsCurrent -eq 1) {
        $Prim = $data.Name
    }
    elseif ($data.IsCurrent -eq 0){ 
        $Sec = $data.Name 
    }
}

Write-Host $Prim
Write-Host $Sec

补充说明

用-eq做比较不会修改原数据,判断逻辑会按照预期执行:

  • 当IsCurrent等于1时,将Name赋值给$Prim
  • 当IsCurrent等于0时,将Name赋值给$Sec

内容的提问来源于stack exchange,提问作者m12345

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.25 03:32:49