【问题标题】:IIF 'Incorrect syntax near' error at SQL Server 2014SQL Server 2014 中的 IIF 'Incorrect syntax near' 错误
【发布时间】:2015-07-27 09:33:43
【问题描述】:

我正在尝试使用此脚本按月控制日期

DECLARE @Date DATETIME = '2015-07-31';
DECLARE @MonthCount INT = 3;
DECLARE @controlDate DATETIME = '2015-04-28';

SELECT
    MONTH(@controlDate),
    MONTH(DATEADD(MONTH, -@MonthCount, @Date)),
    IIF(MONTH(@controlDate) > MONTH(DATEADD(MONTH, -@MonthCount, @Date)),'OK','No') as isOK     

但是我收到了这个语法错误:

消息 102,级别 15,状态 1,第 8 行 '>' 附近的语法不正确

编辑: 当我尝试if 时,它正在工作:

DECLARE @Date DATETIME = '2015-07-31';
DECLARE @MonthCount INT = 3;
DECLARE @controlDate DATETIME = '2015-04-28';

if(MONTH(@controlDate) > MONTH(DATEADD(MONTH, -@MonthCount, @Date)))
print 'OK'
else
print 'No'

我做错了什么还是这是一个错误?

【问题讨论】:

标签: sql sql-server-2014 iif


【解决方案1】:

如果您没有在正确版本的 SQL Server 上运行,或者数据库的兼容性级别设置不充分,则会发生这种情况。

检查兼容性级别:

select compatibility_level 
from sys.databases 
where name = '<database name>'

更改兼容性级别:

alter database <database-name> 
set compatibility level = 110 -- SQL Server 2012

兼容级别列表:https://msdn.microsoft.com/en-us/library/bb510680.aspx

【讨论】:

  • 我的兼容级别是 90。对于 sql server 2014,什么是兼容级别?
  • 似乎 120 是 2014 年的值,请参阅更新答案中的链接。
  • 我收到 120 的错误 => 数据库兼容级别的有效值为 80、90 或 100。
  • @thebjorn - IIFsql server 2012 中引入
  • ssms 版本可以与数据库版本不同(您可以从 ssms 2014 连接到 2008R2 数据库,就像您正在做的那样没有任何问题)。重要的是 db 版本,但对于哪个 sql 语法是合法的。
【解决方案2】:

它应该可以正常工作。也可以使用 CASE 表达式

DECLARE @Date DATETIME = '2015-07-31';
DECLARE @MonthCount INT = 3;
DECLARE @controlDate DATETIME = '2015-04-28';

SELECT
    MONTH(@controlDate),
    MONTH(DATEADD(MONTH, -@MonthCount, @Date)),
    case when MONTH(@controlDate) > 
    MONTH(DATEADD(MONTH, -@MonthCount, @Date)) then 'OK' else 'No' end as isOK  

【讨论】:

    【解决方案3】:

    我遇到了同样的问题,因为IIF 是在 SQL Server 2012 中引入的,但我的客户端使用的是 2008R2。改用caseSQL Server 2008 IIF statement does not seem enabled

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2013-01-01
      • 1970-01-01
      • 2018-05-14
      • 2016-10-23
      • 1970-01-01
      • 2018-11-22
      • 2015-06-14
      相关资源
      最近更新 更多