多条件查询的问题,求解————————————
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




