SQL问题:ID为奇数时拼接产品名称加-v2报错排查
解决SQL中IIF函数类型不兼容导致的转换错误
错误原因
IIF函数要求两个分支的返回值数据类型必须兼容:
- 当
IdProdus为奇数时,返回的是拼接后的字符串(varchar类型) - 当
IdProdus为偶数时,你写的是整数0(int类型)
SQL Server会自动尝试将字符串转换为整数以统一类型,但你的产品名称无法转换为整数,因此抛出Conversion failed错误。
修正方案
根据需求,当IdProdus为偶数时应返回原Denumire值,修改后的SQL如下:
SELECT IdProdus, Denumire, IIF(IdProdus%2=1, CONCAT(Denumire, '-v2'), Denumire) FROM PRODUSE;
如果需要在偶数时返回其他内容,必须保证类型为字符串,例如:
-- 偶数时返回空字符串 SELECT IdProdus, Denumire, IIF(IdProdus%2=1, CONCAT(Denumire, '-v2'), '') FROM PRODUSE; -- 偶数时返回指定默认字符串 SELECT IdProdus, Denumire, IIF(IdProdus%2=1, CONCAT(Denumire, '-v2'), '无版本后缀') FROM PRODUSE;
内容的提问来源于stack exchange,提问作者George Dulică
相关产品推荐
相关产品推荐

