我正在使用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) –