CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
不看会后悔的Windows XP之经验谈 简单快捷DIY实用家庭影院
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  MS-SQL Server >  基础类

多条件查询的问题,求解————————————

楼主waiterNet()2006-10-03 20:42:21 在 MS-SQL Server / 基础类 提问

create   proc   DP_select_student1  
  (  
  @name   char(10),  
  @shcool_age   nvarchar(50),  
  @shcool   nvarchar(50),  
  @class   nvarchar(50),  
  @professional   nvarchar(50),  
  @graduate_year   nvarchar(50)  
  )  
  as  
  select   *   from   DPstudent   where   name   like'%@name%'   and   shcool_age   like   '%@shcool_age%'   and   shcool   like   '%@shcool%'   and   class   like   '%@class%'   and   professional   like   '%@professional%'   and   graduate_year   like   '%@graduate_year%'  
  GO  
   
   
   
   
   
  就是如果用户输入姓名了就根据姓名来查询,可是运行的时候什么都不输入的时候什么也查不出为  
  正确的该怎么写呢  
  问题点数:20、回复次数:7Top

1 楼hahaha1983()回复于 2006-10-03 21:45:56 得分 0

用户名不能为空?Top

2 楼jaway(无限渴望)回复于 2006-10-03 22:02:27 得分 0

有两种方式  
  1.给name符初始值   如:   @name=''  
  2.使用动态sqlTop

3 楼tx1icenhe(冒牌马可 V0.4)回复于 2006-10-04 09:04:59 得分 0

create   proc   DP_select_student1  
  (  
  @name   char(10),  
  @shcool_age   nvarchar(50),  
  @shcool   nvarchar(50),  
  @class   nvarchar(50),  
  @professional   nvarchar(50),  
  @graduate_year   nvarchar(50)  
  )  
  as  
  exec('  
  select   *   from   DPstudent   where   name   like   ''%'+@name+'%''   and   shcool_age   like   ''%'+@shcool_age"'%''   and   shcool   like   ''%'+@shcool+'%''   and   class   like   ''%'+@class+'%''   and   professional   like   ''%'+@professional+'%''   and   graduate_year   like   ''%'+@graduate_year+'%''  
  ')  
   
  GO  
   
   
   
  Top

4 楼tx1icenhe(冒牌马可 V0.4)回复于 2006-10-04 09:06:10 得分 0

需要把  
  @name   char(10),  
  改成  
  @name   varchar(10),  
  Top

5 楼Hopewell_Go(好的在后頭﹗希望更好﹗﹗)回复于 2006-10-04 09:38:13 得分 0

最好将char换成varchar,检查是否存在空格之类的字符Top

6 楼qpeg(提刀的狼)回复于 2006-10-07 15:02:30 得分 0

赋初值即可:  
  create   proc   DP_select_student1  
  (  
  @name   varchar(10)='',  
  @shcool_age   nvarchar(50)='',  
  @shcool   nvarchar(50)='',  
  @class   nvarchar(50)='',  
  @professional   nvarchar(50)='',  
  @graduate_year   nvarchar(50)=''  
  )  
  as  
  select   *   from   DPstudent   where   name   like'%@name%'   and   shcool_age   like   '%@shcool_age%'   and   shcool   like   '%@shcool%'   and   class   like   '%@class%'   and   professional   like   '%@professional%'   and   graduate_year   like   '%@graduate_year%'  
  GOTop

7 楼baggio328(将狼踩尽)回复于 2006-10-07 15:46:04 得分 0

同意楼上Top

相关问题

关键词

得分解答快速导航

  • 帖主:waiterNet

相关链接

  • SQL Server类图书

广告也精彩

反馈

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