SQL Server 2005中的IIF语句

Zer*_*ity 6 sql-server sql-server-2005 iif

是否IIF声明在所有版本的SQL Server的存在?

我已经在MSDN上查了一个教程.

但是当我试图在我的机器上运行此代码时

DECLARE @newDate datetime
SET @newDate =  CONVERT(varchar, {fn NOW()}, 111)
SELECT IIF(@newDate > '2010/12/2', 'Greater', 'smaller')
Run Code Online (Sandbox Code Playgroud)

但是我收到"'>'附近语法错误的错误."

有人可以在SQL Server 2005中为我提供一个例子来说明该IIF语句的存在吗?

mar*_*c_s 11

IIF语句仅存在于MDX中 - SQL Server Analysis Services 的查询语言 - SQL Server 的数据仓库端.

普通T-SQL并没有有一个IIF说法.

你可以在T-SQL中做的最好的就是使用该CASE.... WHEN... THEN...语句.

  • 更新:SQL Server 2012现在有一个IIF声明.http://msdn.microsoft.com/en-us/library/hh213574.aspx (3认同)
  • 标题说2005年,但他的第一个问题是"在所有版本的SQL Server中是否存在IIF语句?".希望将来有人在这篇文章中找到有用的东西.;-) (3认同)

Dam*_*ver 6

你最好使用CASE表达式:

DECLARE @newDate datetime
SET @newDate =  CONVERT(varchar, {fn NOW()}, 111)
SELECT CASE WHEN @newDate > '20101202' THEN 'Greater' ELSE 'smaller' END
Run Code Online (Sandbox Code Playgroud)

另请注意,我已将日期文字切换为安全格式 - "2010/12/2"可由SQL服务器解释为2月12日或12月2日.