2011-12-08 16 views
1

sqlserverでは、私は "case"を使用していますが、エラーを出しています。これは私のケースです。SQL Serverで大文字小文字を書く方法は?

(case when sm.SegCode =0 then '' else sm.SegCode = 7 end) 

私を助けてください。

本当にありがとうございます、実際には私はパラメータ@idを持っています。今私はそれが0でないときにチェックしたいと思う私はその条件を確認sm.segcode@idが0なら、私はsm.segcode = @idである条件をチェックしたくない。

+3

あなたの完全なSQL文を投稿してください。 –

+0

CASEにSSMSカーソルを設定してF1を押すと、この記事が表示されます。http://msdn.microsoft.com/en-us/library/ms181765.aspx –

+1

T-SQLの 'CASE'は、異なる値を返すための単なる方法です。このコードまたはそのコードを実行するためにCASEを使用することはできません。ちょうど値を返す... –

答えて

2

あなたが示した声明には2つの問題があります。

  • else sm.SegCode = 7
  • の構文エラーが空の文字列とint型

と種類の未遂混合が代わりにこれを試してみてください。

case when sm.SegCode = 0 then '' else '7' end 

もちろん、部分的にはゲット私は空の文字列または整数のいずれかに結果を設定することで、あなたが達成しようとしている正確に何かわからないのでSSは、7

1

これは文法的に正しいことになります。

case sm.SegCode when '0' then '' else '7' end 

または

case sm.SegCode when 0 then NULL else 7 end 

時にドキュメントの列がNULLのことが

であることができることを、あなたはケースの詳細を見ることができれば:http://msdn.microsoft.com/en-us/library/ms181765.aspx

0

は常にCaseの文からSame DATA TYPE値を返すようにしようと、思わあなたの最初のcondistionはVARCHARを返しelseセクションでは、INTを返すのに対し、それは、そう7はelse声明、おかげで'7'なり、VARCHARに各値を変換するので、可能な限り最高ではありません

(CASE 
    WHEN sm.SegCode = 0 THEN '' 
ELSE '7' END) 
関連する問題