SQLDataSource WHERE子句中的通配符,用于显示所有结果

时间:2012-09-28 15:43:50

标签: asp.net sql

如何在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')

1 个答案:

答案 0 :(得分:3)

SELECT * FROM [DB_Table] WHERE ([Site] = @Site) AND (RoleType=@RoleType OR @RoleType is NULL)

我认为对于All下拉选项,它应该是null RoleType吗?