代码之家  ›  专栏  ›  技术社区  ›  Iulian

带空值的SQL选择

  •  0
  • Iulian  · 技术社区  · 14 年前

    我有一个SP,它从一个有两列的表中选择数据,如下所示

    @param1 text,
    @param2 text
    Select * from tablle1 where field1 like @param1 and field2 like @param2
    

    但是,由于有时filed2为空,我必须这样做,否则查询不会返回任何内容。

    @param1 text,
    @param2 text
    Select * from tablle1 where field1 like @param1 and (field2 like @param2 OR field2 IS NULL)
    

    我的问题是,如果我现在尝试使用的值运行SP @param2 和“%” @param1 我把桌子上所有的行都拿出来了

    在任何情况下我都能做到这一点? 我打算在ASP.NET网站的搜索表单中使用此SP,并为用户提供在搜索中使用“%”的选项。(最终会有更多的字段需要搜索,每个字段在页面上都会有一个默认为“%”的文本框)

    2 回复  |  直到 14 年前
        1
  •  2
  •   Pranay Rana    14 年前

    试试这个

    @param1 text,
    @param2 text
    Select * from tablle1 where field1 like @param1 and isnull(field2,@param2) like @param2 
    or
    Select * from tablle1 where field1 like @param1 and isnull(field2,'') like @param2 
    
        2
  •  0
  •   Henrik Staun Poulsen    14 年前

    你应该看看 Sommarskogs homepage

    它是关于这个主题的最佳参考,它还将解决您在使用此代码时可能遇到的其他一些问题。