我创建了一个如下所示的存储过程,它提供了基于搜索' Text'的所有菜单。和'菜单类型'列。
我想创建它就像我通过GetMenusbyTextandType''' -1'作为参数,它应该显示MenuMaster表的所有记录。问题是我在' MenuType'中有一些空值。列,不反映在此过程中。
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
答案 0 :(得分:2)
你的sql过于复杂。有一个简单的解决方案:
SELECT *
FROM MenuMaster
WHERE Active = 1
AND [Text] LIKE '%' + @Text + '%'
AND (
@MenuType = '-1'
OR MenuType LIKE '%' + @MenuType + '%'
)