我正在使用SQL服务器(2008),似乎无法在IIF语句的布尔部分中使用LIKE语句。附近有语法错误:在IIF声明的第一部分中是否可以使用类似声明?
下面的查询运行正确,所以我的LIKE语句的语法似乎罚款:运行下面的查询时
SELECT *
FROM dbo.IpPbxCDR
WHERE dbo.IpPbxCDR.OriginationNumber LIKE '+31%'
但是:
SELECT *
FROM dbo.IpPbxCDR
WHERE IIF(dbo.IpPbxCDR.OriginationNumber LIKE '+31%','0' + Right([dbo.IpPbxCDR].[OriginationNumber],9), Replace([dbo.IpPbxCDR].[OriginationNumber],'+','00')) = '02'
我得到以下错误关键字'LIKE'。
我做错了什么,或者是我在SQL Server 2008上无法做到的事情?
哦,另外一件事,如果我在Access中添加表作为链接表,并且在那里运行查询,一切正常,但我认为在这种情况下,Access做评估而不是SQL Server。
编辑:(已解决)好吧,看起来像2012版之前,需要使用Case语句。和往常一样,感谢您的输入用户,你好!
难道你不把:要进行跑步相比于第一个查询(底部)ablve(顶部)时给出的比较,这是exection计划IF部分到'SELECT *,IF()... FROM'? – DanFromGermany
'IIF'是[SQL Server 2012]中的新增功能(http://technet.microsoft.com/zh-cn/library/hh213574.aspx) –
不,因为我需要评估IIF语句的结果。 (我正在做的是比较电话号码,但是我这样做的来源不会以“+ 31XXXXXXXX”格式给我提供电话号码,但是采用荷兰国家格式.IIF声明应该将荷兰电话号码到国家格式,并且应该用00) –