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

T-SQL IIF语句转MySQL:请验证我的转换是否正确

T-SQL转MySQL的IIF语句正确性验证

我们逐段分析你的转换是否正确,同时结合原T-SQL的逻辑给出修正建议:


1. MapType字段的转换

原T-SQL语句

IIf([tblmap].[mapelec],'Digital Maps', IIf([tblmap].[mappaper],'Paper Maps','Other Maps')) AS MapType

(注:原代码遗漏了第一个IIf的分隔逗号,补全后逻辑为:若mapelec为真则返回Digital Maps,否则判断mappaper,为真返回Paper Maps,否则返回Other Maps)

你的转换语句

CASE WHEN tblmap.mapelec = 'TRUE' THEN 'Digital Maps' WHEN tblmap.mappaper = 'TRUE' THEN 'Paper Maps' ELSE 'Other Maps' END AS MapType

正确性判断

转换正确。MySQL的CASE语句会按顺序匹配条件,第一个满足的分支就返回结果,逻辑完全和原嵌套IIf一致。如果你的mapelec/mappaper列是MySQL的布尔类型(BOOL或TINYINT(1)),可以简化为WHEN tblmap.mapelec(无需='TRUE');如果存储的是字符串类型的'TRUE'/'FALSE',当前写法没问题。


2. MapPlan字段的转换

原T-SQL语句

IIf(([tblMap]![MapPlan]=True),'Plan View','') AS MapPlan

逻辑:当MapPlan为True时返回Plan View,否则返回空字符串。

你的转换语句

CASE WHEN tblmap.mapelec = 'FALSE' THEN 'Plan View' END AS MapPlan

正确性判断

转换错误,存在两个问题:

  • 错误地将判断字段从MapPlan写成了mapelec
  • 缺少ELSE ''分支,当条件不满足时会返回NULL而非空字符串

正确的转换应为:

CASE WHEN tblmap.MapPlan = 'TRUE' THEN 'Plan View' ELSE '' END AS MapPlan

3. 数值返回的IIf转换

原T-SQL语句

IIf([tblmap].[mapelec],1)
IIf([tblmap].[mappaper],2,3)

逻辑:

  • 第一个IIf:mapelec为真时返回1,否则返回NULL(T-SQL中IIf省略第三个参数时默认返回NULL)
  • 第二个IIf:mappaper为真时返回2,否则返回3

你的转换语句

CASE WHEN tblmap.mapelec = 'TRUE' THEN '1' END,
CASE WHEN tblmap.mappaper = 'TRUE' THEN '2' ELSE '3' END

正确性判断

  • 第一个转换逻辑正确,但如果要返回数字类型的1,建议去掉引号写成THEN 1;如果是字符串类型则当前写法没问题。
  • 第二个转换完全正确,逻辑和原IIf完全匹配。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.10 03:20:24