如何将空值作为参数传递给参数化查询并获取所有数据?

时间:2015-05-15 14:58:35

标签: sql-server

我有一个包含5列的表,我想定义一个参数化的选择查询来获取一些行。

ID    Date      LetterNumber    divider1    divider2
-----------------------------------------------------
1   01/01/2013    2654            work       sent
2   01/01/2013    8796            vacation   sent
3   05/01/2013    4638            home       recived
4   05/01/2013    4695            work       recived
5   05/01/2013    2356            child      recived
6   09/03/2013    1358            child      recived
7   20/06/2013    1976            work       sent
8   21/06/2013    2468            vacation   sent
9   21/06/2013    9764            home       sent
10  30/08/2013    5346            work       recived

我想为每个divider1divider2编写一个查询并传递参数,并获取一些数据。但有些时候我可能不会使用其中一个参数。例如,有时我需要通过过滤divider2获取数据并获得“已发送”,有时需要过滤divider1divider2以获得LetterNumber具有“工作”值的数据divider1上的divider2和“已发送”值。 那么,有没有办法将空值作为参数动态地未过滤的字段?

3 个答案:

答案 0 :(得分:3)

假设您的divider1和divider2参数为@d1@d2,您可以获取以下数据:

select
    ID,
    Date,
    LetterNumber,
    divider1,
    divider2
from your_table
where 
    (divider1 = @d1 or @d1 is null)
    and (divider2 = @d2 or @d2 is null)

在这种情况下,如果您将null传递给任何参数 - 它将不会用于过滤。

答案 1 :(得分:2)

<system.net>
<settings>

<ipv6 enabled="true"/>
<servicePointManager expect100Continue="false"/>
</settings>

<defaultProxy useDefaultCredentials="true" enabled="true">

<proxy usesystemdefault="True" />

</defaultProxy>

答案 2 :(得分:0)

使用OR Condition例如

Sub AutoForwardIfFrom(objMail As Outlook.MailItem)
    ' Ensure we are working with email items only
    If (objMail.Class <> OlItemType.olMailItem) Then Exit Sub  

     ''''''''' My Code here

End Sub