如何在where子句中使用通配符,以便在某种情况下显示ALL?
我有一个包含以下内容的下拉列表:
我的SQL select语句最初是:
SELECT * FROM [DB_Table] WHERE ([Site] = @Site) AND (RoleType=@RoleType)
角色类型等于员工,经理或经销商,永远不会为空。这很适合按3个角色中的每个角色进行过滤,但是如果选择ALL,我怎么能这样做呢?它显示了所有角色?
我相信我需要做这样的事情,但无法做到正确:
SELECT * FROM [DB_Table] WHERE ([Site] = @Site) AND (RoleType=@RoleType OR @RoleType <> NULL)
答案:
我无法将所有空的DDL值保留为空,所以这就是它的样子并且现在可以正常工作。
<asp:ListItem Text="All" Value="All" Selected="True"></asp:ListItem>
<asp:ListItem Text="Staff" Value="Staff"></asp:ListItem>
<asp:ListItem Text="Manager" Value="Manager"></asp:ListItem>
<asp:ListItem Text="Distributor" Value="Distributor"></asp:ListItem>
SELECT * FROM [DB_Table] WHERE ([Site] = @Site) AND (RoleType=@RoleType OR @RoleType = 'ALL')
答案 0 :(得分:3)
SELECT * FROM [DB_Table] WHERE ([Site] = @Site) AND (RoleType=@RoleType OR @RoleType is NULL)
我认为对于All下拉选项,它应该是null RoleType吗?