您所在的位置: 程序员家园 -> 家园博客 ->
 
在哪里摔倒
就在哪里自己爬起来

用户登录

查  找

最新评论

最新留言

常用网站

网易邮箱 GMAIL  

百度搜索 MSDN

霏凡软件 BT精品

影视帝国 射 手 网

电驴下载 全 库 网

友情连接

茄菲的窝 冰冰博客

枫叶飘零 玫  瑰

ACEN 云 豹 子

统  计



Dict.CN 在线词典, 英语学习, 在线翻译
sql语句里在where条件中使用case语句,放弃了。。。
狼子 发表于 2008-7-15 18:33:00 阅读全文 | 回复(2) | 引用通告 | 编辑

sql语句里在where条件中使用case语句,这个想法,是在做asp.net的多条件组合查询时想到的

做多条件组合查询一般有两种办法,一个是在asp.net里,在Page_Load事件中,根据用户录入的值,判断条件组合sql语句,再执行sql语句,绑定结果到GridView

另一个方法是用存储过程,把全部可能的条件都传递到存储过程里,然后呢,在存储过程里判断每一个条件,组合sql语句后执行返回数据

这两个方法都要组合sql语句

还有就是如果遇到像L叔叔一样子不喜欢用存储过程的人,就要用第一种方法了,如果用第一种方法呢,还不可以直接用SqlDataSource绑定参数到控件,麻烦了

所以我想到在where条件里使用case,像这样子:

declare @UserName varchar(50)
set @UserName = '小林林'
select * from A_User where case @UserName when '' then '' else UserName end = @UserName

从写代码来说,这样子好方便,可以直接写sql语句,直接使用SqlDataSource,直接把每一个参数绑定到对应的控件上

就是,性能不好,GS说的

用CASE后需要逐条转换 一般CASE用在小数据量查询里

我想过了,GS是对的

用在where条件里,如果有n个记录,就要执行n次@UserName = ''的判断,然后呢,如果@UserName的值是''的,就变成where '' = ''

select * from A_User where '' = ''

select * from A_User
比起来,多了一个没有用的条件。。。为了得到这个条件,我还要执行n次判断

想着要在asp.net的代码里省省,就浪费了好多资源,这样子不好,放弃了。。。

Re:sql语句里在where条件中使用case语句,放弃了。。。
东域流星发表评论于2008-9-4 10:55:00 个人主页 | 引用 | 返回 | 删除 | 回复

狼哥! 现在有急事找您啊!如果你方便把您的Q或者邮箱贴出来,那麻烦请您加我Q365811328或者邮箱xionggang_1988@163.com,  是关于installshield修改XML的问题,我看您贴了一篇文章出来。谢谢您啊。我急死了啊

Re:sql语句里在where条件中使用case语句,放弃了。。。
mountain315发表评论于2008-9-4 14:54:00 个人主页 | 引用 | 返回 | 删除 | 回复
以下引用东域流星在2008-9-4 10:55:00发表的评论:

狼哥! 现在有急事找您啊!如果你方便把您的Q或者邮箱贴出来,那麻烦请您加我Q365811328或者邮箱xionggang_1988@163.com,  是关于installshield修改XML的问题,我看您贴了一篇文章出来。谢谢您啊。我急死了啊


给你邮件了

发表评论:

    昵称:
    密码:
    主页:
    标题:
Powered by Oblog.