带有空值的sql选择

发布于 2024-09-19 02:21:48 字数 560 浏览 3 评论 0原文

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

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

但是,因为有时 Filed2 为 null 我必须这样做,否则查询不会返回任何内容

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

我的问题是,如果我现在尝试使用 @param2@param1 的 '%' 我从表中获取所有行

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

I have SP that selects data from a table with two columns like this

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

However , because sometimes Filed2 is null i had to do this , otherwise the query returned nothing

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

My problem is that if I now try to run the SP with a value for @param2 and '%' for @param1 i get all the rows from the table

How can i make this in every situation ?
I intend to use this SP in a search form on a asp.net site, and give the users the option to use '%' in searches.(eventually there would me more fields to search for and each one will have a textbox on the page that defaults to '%')

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

淤浪 2024-09-26 02:21:49

你应该看看 Sommarskogs 主页

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

you should take a look at Sommarskogs homepage

It is the best reference on the subject, and it will also solve some of the other problems you most probably are having with this code.

潜移默化 2024-09-26 02:21:48

试试这个

@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 

try this

@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 
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文