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

任意条件选择:怎样构造sql语句?用模式么?用什么模式?

楼主thenew_(好吃的尽管吃,好玩的尽管玩)2004-12-03 12:43:01 在 C/C++ / 模式及实现 提问

在查询数据库时,有很多地方会遇到选择0个到n个条件中若干个进行查询的?  
  因此,可能的sql语句组合多达几十种,这么多,要一个个的写sql语句,真是烦死人了!  
  select   *   from   table   where   id   =   @id   [and   columnName_1   =   @value_1...[columnName_n   =   @value_n]]  
   
  怎么设计sql语句? 问题点数:20、回复次数:11Top

1 楼tql312400(屠步空杯)回复于 2004-12-03 12:48:49 得分 5

EXEC   SQL   SELECT     *   FROM   表名一   WHERE     字段1=:变量1 AND   ...   AND     字段N=:变量N;  
  其中变量声明在  
  EXEC   SQL   BEGIN   DECLARE   SECTION;  
  类型 变量1;  
  ...  
  类型 变量N                                          
  EXEC   SQL   END   DECLARE   SECTION;Top

2 楼bluesage(海蓝色)回复于 2004-12-03 12:54:38 得分 5

BUILDER模式,是不是能构造一个符合要求的SQL语句Top

3 楼thenew_(好吃的尽管吃,好玩的尽管玩)回复于 2004-12-03 16:40:22 得分 0

totql312400(屠步空杯)   :  
  这种方法好像不行  
  比如对于一个表有   性别、年龄、民族、姓名   四个字段,  
  随便怎么输入都能查得所要结果,中间的and怎么弄?  
   
  select   *   from   table   where   sex   =   @sex   and   age   =   @age  
  select   *   from   table   where   age   =   @age   and   name   =   @name  
  select   *   from   table   where     name   =   @name   and   aa   =   @aa,  
  语句数很多啊,而且都得硬编码  
   
   
  Top

4 楼Squall1009(钰枫)(找工作ing)回复于 2004-12-03 23:23:22 得分 5

不能加上逻辑非吗?Top

5 楼Squall1009(钰枫)(找工作ing)回复于 2004-12-03 23:23:33 得分 5

说错了逻辑或Top

6 楼thenew_(好吃的尽管吃,好玩的尽管玩)回复于 2004-12-04 12:48:13 得分 0

to   Squall1009(钰枫)(我思故我在)   :  
  这样能解决一个问题:  
  select   *   from   table   where   id   =   @id   or   name   =   @name   or   sex   =   @sex  
  其他的,比如只提供了一个条件,而这个条件是id?name?sex?我并不知道,  
  或者提供了两个条件,而这个两个条件是name和sex?sex和age?我也不知道,  
  或者提供了三个条件,而这个三个条件我也不知道,因此,  
  逻辑或不能解决所有问题。  
  没办法,本人懒,不想把所有可能的条件都列出来,  
  因此只好求助了Top

7 楼classrect(以前的号丢了,郁闷)回复于 2004-12-06 12:49:24 得分 0

类似MVC   模式,认为sql语句的内容是   M,这样将其存在文件里(xml文件或自定义)  
   
  使用时将其序列化到buf里,在执行。而不是硬编码!!!!  
   
  这样耦合最小,程序只和sqlbuf有关!   sql内容在外边可以编辑!  
   
  这样将“数据”和“逻辑”分离!  
   
  也不知道我说的对不对,呵呵Top

8 楼sandrowjw(我的小猫照片给弄坏了,心都碎了)回复于 2004-12-07 10:53:52 得分 0

楼主你的字段个数和名称总是确定的吧,如果不确定的只好写成proc了  
  确定的话可以简单一些,比如这样  
  select   *   from   table   where   (@name   =   ''   or   name   =   @name)   and   (@sex   =   ''   or   sex   =   @sex)   and   (@id   =   ''   or   @id   =   id)    
  不过这样还不如你自己有一个拼接器能够动态拼接Top

9 楼icenl(成冈【我不要分,不要给我】)回复于 2004-12-08 19:44:12 得分 0

不如将所有的条件用   and   连接起来就是了,   而不需要的字段就用如   "id   IS   NOT   NULL"   形式的语句.Top

10 楼icenl(成冈【我不要分,不要给我】)回复于 2004-12-08 19:46:00 得分 0

哦,   sandrowjw写的好像也是这个意思?Top

11 楼thenew_(好吃的尽管吃,好玩的尽管玩)回复于 2004-12-10 14:21:33 得分 0

 
  select   *   from   table   where   (@name   =   ''   or   name   =   @name)   and   (@sex   =   ''   or   sex   =   @sex)   and   (@id   =   ''   or   @id   =   id)    
   
  这个能满足我的要求了。  
   
  这么说来,作拼接器就没有必要了。  
   
  谢谢各位Top

相关问题

  • asp动态构造sql语句
  • 如何构造这样的sql语句??
  • 怎样构造sql语句(用变量)
  • SQL语句的构造问题
  • 构造sql语句时,布尔型数据是用那个语句定义的?
  • 请问如何构造如下查询条件的SQL语句?
  • 请问如果构造这条SQL语句??
  • 问个SQL构造语句,谢谢,很急!。。。我头大晕了!
  • 一个简单的SQL语句构造问题
  • 请问如何构造添加字段的SQL语句

关键词

  • 语句
  • 字段
  • 模式
  • sql
  • sex
  • 条件
  • 变量
  • 拼接
  • age
  • 确定

得分解答快速导航

  • 帖主:thenew_
  • tql312400
  • bluesage
  • Squall1009
  • Squall1009

相关链接

  • C/C++ Blog
  • C/C++类图书
  • C/C++类源码下载

广告也精彩

反馈

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