0

特定の状況でALLが表示される場所のwhere句にワイルドカードを含めるにはどうすればよいですか?

以下を含むドロップダウンリストがあります。

  • すべて-(値なし)
  • スタッフ(値=スタッフ)
  • マネージャー(値=マネージャー)
  • ディストリビューター(値=ディストリビューター)

私のSQLselectステートメントは元々次のとおりでした。

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

役割タイプは、スタッフ、マネージャー、またはディストリビューターのいずれかに等しく、空白になることはありません。これは、3つの役割のそれぞれでフィルタリングするのに最適ですが、[すべて]を選択すると、代わりにすべてが表示されるようにするにはどうすればよいですか?

私はこのようなことをする必要があると信じていますが、それを正しく理解することはできません:

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

答え:

ALLの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')
4

1 に答える 1

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

All ドロップダウンの選択肢では、RoleType を null にする必要があると思いますか?

于 2012-09-28T15:45:53.927 に答える