我正在尝试在select语句中使用IIF()
。布尔表达式检查字段值是否等于空字符串。语法如下:
SELECT IIF(field = '','ONe action','Another')
我收到错误“语法错误near =”
我尝试了一个简单的测试:
SELECT IIF(2 > 1, 'yes','no')
我正在"syntax errror near >"
这让我相信IIF
根本不起作用。
我正在使用SQL SERVER 2008 R2,是否需要配置一些东西以允许IIF()工作?有什么关于我缺少的语法吗?我的测试很简单,但仍然会出现语法错误。
任何帮助将不胜感激。非常感谢!
答案 0 :(得分:68)
如上所述,IIF
是SQL2012的一项功能。
将IIF
替换为CASE
(SQL 2012无论如何都会这样做)
SELECT CASE field WHEN '' THEN 'ONe action' ELSE 'Another' END
答案 1 :(得分:27)
IFF
从SQL Server 2012开始可用。因此请改用“Case”。
如果您在SQL Server 2008中寻找更紧凑的表单(函数而不是大小写),您可以使用:
isnull((select 'yes' where 2 > 1),'no')
而不是:
SELECT IIF(2 > 1, 'yes','no')
然后你的陈述将是:
SELECT isnull((select 'yes' where 2 > 1),'no')
答案 2 :(得分:11)
IIF
为introduced in SQL Server 2012,因此它无法在SQL Server 2008或SQL Server 2008 R2中运行。
答案 3 :(得分:2)
DECLARE @a int=45
DECLARE @b int=40
SELECT
CASE
WHEN @A>@B THEN 'True'
ELSE 'FALSE'
END
您可以使用此解决方案代替IIF
。