SQL Server 2008 IIF语句似乎未启用
我试图在select语句中使用SQL Server 2008 IIF语句似乎未启用,sql,sql-server,sql-server-2008,sql-server-2008-r2,Sql,Sql Server,Sql Server 2008,Sql Server 2008 R2,我试图在select语句中使用IIF()。布尔表达式检查字段值是否等于空字符串。语法如下: SELECT IIF(field = '','ONe action','Another') 我得到错误“语法错误接近=” 我尝试了一个简单的测试: SELECT IIF(2 > 1, 'yes','no') 我发现“语法错误接近>” 这让我相信IIF根本不起作用 我使用的是SQL SERVER 2008 R2,是否需要对其进行配置以允许IIF()工作?语法方面有什么我遗漏的吗?我的测试非常简单,
IIF()。布尔表达式检查字段值是否等于空字符串。语法如下:
SELECT IIF(field = '','ONe action','Another')
我得到错误“语法错误接近=”
我尝试了一个简单的测试:
SELECT IIF(2 > 1, 'yes','no')
我发现“语法错误接近>”
这让我相信IIF
根本不起作用
我使用的是SQL SERVER 2008 R2,是否需要对其进行配置以允许IIF()工作?语法方面有什么我遗漏的吗?我的测试非常简单,但仍然会出现语法错误
任何帮助都将不胜感激。多谢 IIF
was,因此它在SQL Server 2008或SQL Server 2008 R2中不起作用。如前所述,IIF
是SQL2012的一项功能
将您的IIF
替换为CASE
(SQL 2012无论如何都会这样做)
IFF
从SQL Server 2012开始提供。所以用“Case”代替
如果您想在SQL Server 2008中寻找更紧凑的表单(函数而不是大小写),可以使用:
isnull((select 'yes' where 2 > 1),'no')
而不是:
SELECT IIF(2 > 1, 'yes','no')
那么你的声明将是:
SELECT isnull((在2>1的地方选择'yes','no')
您可以使用此解决方案而不是IIF
SELECT IIF(2 > 1, 'yes','no')
DECLARE @a int=45
DECLARE @b int=40
SELECT
CASE
WHEN @A>@B THEN 'True'
ELSE 'FALSE'
END