2012-07-18 70 views
32

我試圖在select語句中使用IIF()。布爾表達式檢查字段值是否等於空字符串。該語法如下:似乎沒有啓用SQL Server 2008 IIF語句

SELECT IIF(field = '','ONe action','Another') 

我越來越

我想一個簡單的測試誤差 「近=語法錯誤」:

SELECT IIF(2 > 1, 'yes','no') 

和我得到"syntax errror near >"

這讓我相信IIF根本不起作用。

我正在使用SQL SERVER 2008 R2,是否有需要配置以允許IIF()工作?有什麼關於我失蹤的語法?我的測試很簡單,我仍然得到語法錯誤。

任何幫助,將不勝感激。非常感謝!

+3

這是2012年新增的 – 2012-07-18 11:55:04

回答

61

如前所述,IIF是一個SQL2012功能。

替換您的IIFCASE(這是SQL 2012無論如何都會做)

SELECT CASE field WHEN '' THEN 'ONe action' ELSE 'Another' END 
25

IFF可從SQL Server 2012的開頭,所以用 '案例' 代替。

如果您正在尋找在SQL Server 2008中的更緊湊的形式(函數代替的情況下),可以使用:的

isnull((select 'yes' where 2 > 1),'no') 

代替:

SELECT IIF(2 > 1, 'yes','no') 

然後你的聲明將成爲:

SELECT isnull((select 'yes' where 2 > 1),'no')

1
DECLARE @a int=45 

DECLARE @b int=40 

SELECT 
     CASE 
     WHEN @A>@B THEN 'True' 

ELSE 'FALSE'   
     END 

您可以使用此解決方案代替IIF