如何实现组合查询的存储过程?

billhao 2003-10-23 11:28:41
我有一个字典表,列有:英文,中文,词性等等。
要实现任意组合查询,比如:
英文=book,中文=书,词性=vt
英文=book,中文=书
中文=书,词性=vt
这个存储过程写一个里面还是分成多个写,哪种比较好?
如果写在一个里面该怎么判断为空的字段?
谢谢
...全文
35 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
txlicenhe 2003-10-23
  • 打赏
  • 举报
回复
vb:
cond1 = iif(条件1,"英文=book","1=1")
cond2 = iif(条件2,"中文=书","1=1")
cond3 = iif(条件3,"词性=vt","1=1")
cond = cond1 + " and " + cond2 + " and " + cond3
...


wzh1215 2003-10-23
  • 打赏
  • 举报
回复
create procedure aa
@Eng varchar(30)='',
@Chi varchar(30)='',
@Wod varchar(10)=''
AS
select * from 字典表
where 英文 like '%'+@Eng+'%'
and 中文 like '%'+@Chi+'%'
and 词性 like '%'+@Wod+'%'
order by 英文
billhao 2003-10-23
  • 打赏
  • 举报
回复
就是可以用这三个列的任意组合条件查询,可以指定英文,中文,词性,也可以只指定其中一部分
如果写在一个里面,用户可能只是指定两个条件,另外的条件就为空,因此在查询之前必须要判断条件是否为空,并将为空的条件排除
friendliu 2003-10-23
  • 打赏
  • 举报
回复
不用分开。。。
判断是否为空
isnull(字段名,0)
或 字段名 is null
pengdali 2003-10-23
  • 打赏
  • 举报
回复
set @sql='中文=''书'' and 词性=''vt'' '

exec('select * from 字典表 where '+@sql)
CrazyFor 2003-10-23
  • 打赏
  • 举报
回复
Q:这个存储过程写一个里面还是分成多个写,哪种比较好?
A:好象没有必要分开,不明白你想怎么查.


Q:如果写在一个里面该怎么判断为空的字段?
A: where 字段名 is null

22,209

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 疑难问题
社区管理员
  • 疑难问题社区
  • 尘觉
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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