CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
可用分押宝游戏火热进行中... 专题改版:Java Web 专题
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  .NET技术 >  ASP.NET

多个查询条件的怎么实现

楼主long83(野猪林)2006-03-02 11:44:45 在 .NET技术 / ASP.NET 提问

要在一个系统中实现查询功能,系统界面上有多个查询条件需要用户输入,但允许用户只输入其中部分条件。因此查询需要根据用户输入的那几项进行,这样的查询怎么实现的效率高。能不能用存储过程来实现? 问题点数:50、回复次数:9Top

1 楼engine198473(我喜欢偷偷的看她偷偷的看我)回复于 2006-03-02 11:49:00 得分 0

提供给楼主一个思路:楼主可以根据输入条件构造查询语句  
   
  记得多给分哦:)Top

2 楼toin((材娃))回复于 2006-03-02 11:51:46 得分 0

我有源码的哟Top

3 楼jjlook(勇)回复于 2006-03-02 11:56:22 得分 40

用存储过程比较好  
  declare   @sql   varchar(1000)  
  set   @sql='select   *   from   tb1   where   1=1'  
  if   条件1<>''  
      set   @sql=@sql+'   and   col1='+@colValue  
  if   条件2<>''  
  ...  
  execute(@sql)Top

4 楼coldpanth(^War3^)回复于 2006-03-02 12:02:15 得分 10

不知道你这几个查询条件是不是有好多字符型数据?如果只有一项是字符的,那么正常检索速度是相当快的,前提是有好的索引  
   
  如果有好多字符型字段,不想分别Like的话(也就是Like好多次,每Like一次就会遍历此表所有数据),就只能牺牲数据库空间了,将各项分别组合成新的字段,然后每次查询时,只针对那个组合字段来Like一次,例如,有3个需要查询的字段  
  字段1     字段2     字段3  
   
  新增如下字段  
  字段1和字段2     字段1和字段3       字段2和字段3     字段1和字段2和字段3  
   
  把数据Update接好,就可以了Top

5 楼coldpanth(^War3^)回复于 2006-03-02 12:03:18 得分 0

必竟硬盘相对于性能来说,还是硬盘便宜^_^Top

6 楼goody9807(http://goody9807.cnblogs.com)回复于 2006-03-02 12:19:23 得分 0

jjlook(勇)   的方法正解!Top

7 楼studydotnet(Dreamfly)回复于 2006-03-02 12:22:15 得分 0

只up不思考Top

8 楼long83(野猪林)回复于 2006-03-02 14:29:49 得分 0

我写了一个查询语句,但是不行,各位帮我看看  
  CREATE   PROCEDURE   [dbo].[qt_getemployeesinfo]    
  @ID   varchar(12),  
  @NAME   varchar(50),  
  @GZ   varchar(6),  
  @COM   varchar(12),  
  @DEPT   varchar(6)  
  AS  
  declare   @strSql   varchar(1000)  
  declare   @MN3011   varchar(6)  
  declare   @MN2001   varchar(6)  
  declare   @MN2002   varchar(6)  
  declare   @MN1003   varchar(6)  
  set   @MN3011='MN3011'  
  set   @MN2001='MN2001'  
  set   @MN2002='MN2002'  
  set   @MN1003='MN1003'  
  set   @strSql='SELECT   BS_Employees.YGID   as   工号,   BS_Employees.YGName   as   姓名,   BS_Employees.ENGName   as   英文名,    
              c.DictDName   AS   性别,   BS_Employees.GSID   as   所属公司,   a.DictDName   as   所属部门,   b.DictDName   AS   职务,    
              BS_Employees.LXDH   as   联系电话,   BS_Employees.DZAddress   as   联系地址,   BS_Employees.RZRQ   as   入职日期,    
              d.DictDName   AS   状态  
  FROM   BS_Employees   INNER   JOIN  
              BS_SysDictD   a   ON   BS_Employees.DeptID   =   a.DictDID   INNER   JOIN  
              BS_SysDictD   b   ON   BS_Employees.YGGZ   =   b.DictDID   INNER   JOIN  
              BS_SysDictD   c   ON   BS_Employees.XBSex   =   c.DictDID   INNER   JOIN  
              BS_SysDictD   d   ON   BS_Employees.ZTState   =   d.DictDID  
  WHERE   (a.DictMNID   =   '  
  set   @strSql=@strSql+@MN3011+')   AND   (b.DictMNID   =   '  
  set   @strSql=@strSql+@MN2001+')   AND   (c.DictMNID   =   '  
  set   @strSql=@strSql+@MN2002+')   AND   (d.DictMNID   =   '  
  set   @strSql=@strSql+@MN1003+')'  
  if   @ID   <>   ''   BEGIN  
  set   @strSql=@strSql+'   AND   Employees.YGID='+@ID  
  END  
  if   @NAME   <>   ''   BEGIN  
  set   @strSql=@strSql+'   AND   Employees.YGName='+@NAME  
  END  
  if   @GZ   <>   ''   BEGIN  
  set   @strSql=@strSql+'   AND   Employees.YGID='+@GZ  
  END  
  if   @COM   <>   ''   BEGIN  
  set   @strSql=@strSql+'   AND   Employees.GSID='+@COM  
  END  
  if   @DEPT   <>   ''   BEGIN  
  set   @strSql=@strSql+'   AND   Employees.DictDName='+@DEPT  
  END  
  execute(@strSql)  
  GO  
  Top

9 楼long83(野猪林)回复于 2006-03-03 08:58:42 得分 0

问题解决了,谢谢各位Top

相关问题

  • 求救:怎么样实现数据库的多条件查询?
  • xml节点查询的selectNodes怎么能实现多条件查询?
  • 如何实现条件组合查询
  • 急!如何实现多条件查询??
  • 高级查询问题:查询结果的列数可选,查询条件可选,数据库是SQL2000,用vb.net怎么实现,望大虾教我!!
  • 如何实现混合条件查询?类似 csdn的 查询
  • 报表制作,你用存储过程来实现吗?那查询条件怎么办?
  • 新来mm求教:子查询里怎么实现条件"或"?各位帮帮忙吧呜呜
  • ■■■■■■■■■请问怎么在JAVA中实现给定条件的对XML文件的查询。■■■■■■■■■(UP 有分)■■■■■■■■■
  • 正在学习的新手求救:怎么样实现多条件查询数据库?

关键词

  • 字段
  • 查询
  • 字符
  • 数据
  • 用户
  • sql
  • mn
  • beginset
  • strsql
  • ygid

得分解答快速导航

  • 帖主:long83
  • jjlook
  • coldpanth

相关链接

  • CSDN .NET频道
  • .NET类图书
  • C#类图书
  • .NET类源码下载

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
世纪乐知(北京)网络技术有限公司 版权所有, 京 ICP 证 020026 号
北京创新乐知广告有限公司 提供技术支持
Copyright © 2000-2007, CSDN.NET, All Rights Reserved
GongshangLogo