以下语句给出转换失败错误。
SELECT IIF(500<1000, 'YES', 0);
其结果是否基于数据类型?
我需要以下声明应该有效。
SELECT IIF(500<1000, 'YES', 0);
因为我需要这个来创建语句
select CONCAT('Current value changed from ''' , IIF(@Old = 0,'None', @Old) , ''' to ''' , IIF(@New = 0,'None', @New) , ''', ')
我假设您正在使用 SQL Server 的
IIF()
函数。 此函数的行为类似于 CASE
表达式。 在 CASE
表达式中,所有分支(可能的输出)必须具有相同的类型。 这意味着,在您的代码中:
SELECT IIF(500 < 1000, 'YES', 0);
if 和 else 值应该都是字符串或整数。 将字符串文字
'YES'
视为整数是没有意义的,因此您可能需要以下内容:
SELECT IIF(500 < 1000, 'YES', '0');
在这里,我们将零变成了字符串文字。 上述版本运行时应该没有任何转换错误。