2011-12-05 19 views
3

私のコードで何が問題になっていますか?SQLクエリエラー "キーワード 'IS'の近くに構文が正しくありません。"

TBLテーブルから非アクティブまたはアクティブな行を取得するためにBITを渡したいとします。

これは '' キーワードの近くにエラー

不正な構文です。

は、ここでは、コード

CREATE function [CM].[fnSearch] 
(
@Status bit 
) 
RETURNS Table 
as 
RETURN 
(
    SELECT * 
    FrOM TBL 
    WHERE CASE @Status 
       WHEN '0' THEN (DeletedBy IS NULL) 
       ELSE (DeletedBy IS NOT NULL) 
      END 
) 

UPDATE:。。

(SELECTは私の入力ミスである前にそれについては申し訳ありません

+1

決して閉じない選択の前にブラケットが表示されます。 –

+0

申し訳ありません、タイプミスです。 – kevin

答えて

5

私はこの権利を読んでいる場合は、ビット値(1または0のいずれか)を評価するブール式として(DeletedBy IS [NOT] NULL)を使用しようとしていますか?そうであれば、それはできません。代わりに、このようething:

CASE WHEN (@Status = 0 AND DeletedBy IS NULL) OR DeletedBy IS NOT NULL THEN 1 ELSE 0 END 
2

SQLは1または0にブール式を評価しません。 trueの場合は明示的に1に設定し、falseの場合は0に設定する必要があります。

関連する問題