2016-11-15 13 views
0

以下に示すストアドプロシージャを作成しました。これは、 'Text'および 'MenuType'列の検索に基づいてすべてのメニューを提供します。演算子のようなSql Serverのnull値を処理する方法

GetMenusbyTextandType '、' - 1 'をパラメータとして渡すように作成したい場合は、MenuMasterテーブルのすべてのレコードを表示する必要があります。問題は、このProcに反映されていない 'MenuType'列にいくつかのnull値があることです。

Create proc GetMenusbyTextandType 
    @Text nvarchar(400), 
    @MenuType nvarchar(10) 
as 
begin 
    SELECT * 
    FROM MenuMaster 
    WHERE Active = 1 
     AND [Text] LIKE '%' + @Text + '%' 
     AND MenuType LIKE 
      CASE 
       WHEN @MenuType = '-1' 
        THEN '%' + ISNULL(MenuType, '') + '%' 
        ELSE '%' + @MenuType + '%' 
      END 
END 

enter image description here

+1

あなたのコードは私がSQL Serverを推測しているように見えますが、このようなものを人々に推測させるべきではありません。 relevan't rdbmsタグとテーブル構造を含めるように質問を編集してください。 –

+0

ええ、そのSQLサーバー –

+0

とテーブル?テーブルDDLといくつかのサンプルデータをDML –

答えて

2

あなたのSQLを過剰に複雑にしています。

SELECT * 
FROM MenuMaster 
WHERE Active = 1 
    AND [Text] LIKE '%' + @Text + '%' 
    AND (
     @MenuType = '-1' 
     OR MenuType LIKE '%' + @MenuType + '%' 
) 
+0

として追加してください。@ Zoharに感謝します。 –

+0

喜んで:-) –

関連する問題