SQL IIF 结果基于数据类型?

问题描述 投票:0回答:1

以下语句给出转换失败错误。

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 if-statement conditional-statements
1个回答
0
投票

我假设您正在使用 SQL Server 的

IIF()
函数。 此函数的行为类似于
CASE
表达式。 在
CASE
表达式中,所有分支(可能的输出)必须具有相同的类型。 这意味着,在您的代码中:

SELECT IIF(500 < 1000, 'YES', 0);

if 和 else 值应该都是字符串或整数。 将字符串文字

'YES'
视为整数是没有意义的,因此您可能需要以下内容:

SELECT IIF(500 < 1000, 'YES', '0');

在这里,我们将零变成了字符串文字。 上述版本运行时应该没有任何转换错误。

© www.soinside.com 2019 - 2024. All rights reserved.