2013-08-28 110 views
0

我真的在MSSQL 2012中遇到了一個case語句。我已經四處尋找其他答案,但儘管我有一些幫助,但似乎沒有解決問題。帶有聚合和類似子句的case語句 - MSSQL 2012

case firstname 
    when len(ltrim(rtrim(firstname))) > 11 then 'blah' 
    else 'blahblah' 
end as test 

我得到一個語法錯誤,'>'字符。

原來,這是

case firstname 
    when ltrim(rtrim(firstname)) like '% %' then 'blah' 
    else 'blahblah' 
end as test 

,但我認爲有可能已經對類似的關鍵字一定的敏感性,所以我把它改爲「>」,但我得到了同樣的事情。

可能是一個愚蠢的問題,但我已經撞了我的頭幾個小時,一些見解將不勝感激。

回答

2

試試這個版本:

(case when len(ltrim(rtrim(firstname))) > 11 then 'blah' 
     else 'blahblah' 
end) as test 

case說法有兩個版本。與該變量的一個用於常量表達式:

(case firstname 
     when 'Arnold' then . . . 
     when 'Betty' then . . . 
end) 

第二個版本(這是真的是唯一一個I使用)取條件爲每個部分:

(case when firstname = 'Arnold' then . . . 
+0

啊,輝煌!這樣可行。非常感謝你! –

+0

很快就會接受。 –

0

Chnage它

case 
    when len(ltrim(rtrim(firstname))) > 11 then 'blah' 
    else 'blahblah' 
end as test 
0

你在混合使用CASE expressions這兩種形式。

一個簡單的表達式檢查每個WHEN子句與CASE之後和第一個WHEN之前的表達式是否相等。

搜索的案例表達式檢查每個WHEN子句中的單獨任意謂詞,並且沒有CASE和第一個WHEN之間的表達式。

嘗試:

case 
    when len(ltrim(rtrim(firstname))) > 11 then 'blah' 
    else 'blahblah' 
end as test