多条件查询问题 求大家指点下!

kenny_dy 2008-07-15 09:11:52
Select sary_xh,sary_xb,sary_sh,sary_zhbz,sary_zhsj,sary_rylx,sary_xm,sary_zh,sary_hjdz,sary_jtgj,sary_cph,sary_wlbs,sary_hm,sary_bkrq,sydw_name from jh_sary inner join jh_sydw on jh_sary.sary_bkdw=jh_sydw.sydw_code where (sary_rylx=@Rylx) or (@Name is null or sary_xm like '%'+@Name+'%') or (@Zh is null or sary_zh like '%'+@Zh+'%') or (@Hjdz is null or sary_hjdz like '%'+@Hjdz+'%') or (sary_jtgj=@Jtgj) or (@Cph is null or sary_cph like '%'+@Cph+'%') or (sary_wlbs=@Wlbs) or (@Hm is null or sary_hm like '%'+@Hm+'%') or (sary_bkdw=@Bkdw) or (sary_bkrq between @Bkrq1 and @Bkrq2)


这个查询不能实现多条件查询,求大家指点一下,感激涕零!
...全文
145 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
kenny_dy 2008-07-15
  • 打赏
  • 举报
回复
...没人了吗
kenny_dy 2008-07-15
  • 打赏
  • 举报
回复
我是新手啊!菜鸟级别
lydiablo 2008-07-15
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 suyiming 的回复:]
很好很强大

gfgdfgdfgdf
zsj830120 2008-07-15
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 JustLovePro 的回复:]
1.存储过程实现
2.利用字符串拼接
----
这样写一大片,不容易看啊~
[/Quote]


是啊,拼接吧;
suyiming 2008-07-15
  • 打赏
  • 举报
回复
很好很强大
JustLovePro 2008-07-15
  • 打赏
  • 举报
回复
1.存储过程实现
2.利用字符串拼接
----
这样写一大片,不容易看啊~
DoubleFrost 2008-07-15
  • 打赏
  • 举报
回复
up
一品梅 2008-07-15
  • 打赏
  • 举报
回复
什么业务要那么复杂?好庞大。
leaohong 2008-07-15
  • 打赏
  • 举报
回复
要赋这么多参数给它,太麻烦了,要多条件就拼接吧
shadowjl 2008-07-15
  • 打赏
  • 举报
回复

ALTER PROCEDURE dbo.Infosearch

(
@bmid smallint = null,
@xm varchar(10)=null,
@xb varchar(10)=null,
@strage smallint=null,
@endage smallint=null,
@zzmm varchar(10)=null,
@xl varchar(10)=null,
@zw varchar(10)=null
)

AS
/* SET NOCOUNT ON */
declare @sql varchar(100)
if @bmid is not null
begin
set @sql=' where 部门ID='+Convert(varchar(10),@bmid)
end

if @xm is not null
begin
if @sql is not null
set @sql=@sql+' and 姓名like'+@xm
else set @sql=' where 姓名like'+@xm
end

if @xb is not null
begin
if @sql is not null
set @sql=@sql+' and 性别='+@xb
else set @sql=' where 性别='+@xb
end

if @strage is not null
begin
if @sql is not null
set @sql=@sql+' and 年龄between '+Convert(varchar(10),@strage)
else set @sql=' where 年龄between '+Convert(varchar(10),@strage)
end

if @endage is not null
begin
set @sql=@sql+' and '+Convert(varchar(10),@endage)
end

if @zzmm is not null
begin
if @sql is not null
set @sql=@sql+' and 政治面貌='+@zzmm
else set @sql=' where 政治面貌='+@zzmm
end

if @xl is not null
begin
if @sql is not null
set @sql=@sql+' and 学历='+@xl
else set @sql=' where 学历='+@xl
end

if @zw is not null
begin
if @sql is not null
set @sql=@sql+' and 职位='+@zw
else set @sql=' where 职位='+@zw
end

exec('select 职工号,姓名,性别,年龄,学历,婚姻状况,政治面貌from yuangong'+@sql)
RETURN

多条件查询
conan304 2008-07-15
  • 打赏
  • 举报
回复
先放到查询管理器里面试试
一个条件一个条件慢慢的加
kenny_dy 2008-07-15
  • 打赏
  • 举报
回复
自己顶!UP

62,046

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧