0

MSSQL 2012 の case ステートメントに本当に苦労しています。他の回答を探しましたが、助けはありますが、問題を解決するものはないようです。

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

likeキーワードにセンシティブなところがあるのではないかと思ったので、「>」に変更しましたが、同じ結果になります。

おそらくばかげた質問ですが、私は数時間頭を悩ませてきました。洞察をいただければ幸いです。

4

3 に答える 3

2

このバージョンを試してください:

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

このcaseステートメントには 2 つのバージョンがあります。変数を持つものは、定数式に使用されます。

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

2 番目のバージョン (実際に私が使用するのはこれだけです) は、各部分の条件を受け取ります。

(case when firstname = 'Arnold' then . . .
于 2013-08-28T12:47:55.617 に答える
0

CASEの 2 つの形式を混同しています。

単純なケース式は、各句が最初の の前後のWHEN式と等しいかどうかをチェックします。CASEWHEN

検索された case 式は、各句の個別の任意の述語をチェックし、最初の と のWHEN間に式がありません。CASEWHEN

試す:

case
    when len(ltrim(rtrim(firstname))) > 11 then 'blah'
    else 'blahblah'
end as test
于 2013-08-28T12:49:07.443 に答える
0

に変更

case 
    when len(ltrim(rtrim(firstname))) > 11 then 'blah'
    else 'blahblah'
end as test
于 2013-08-28T12:48:40.607 に答える