在线等,对于你们是简单的问题。(10分)

  • 主题发起人 主题发起人 多多帮助
  • 开始时间 开始时间

多多帮助

Unregistered / Unconfirmed
GUEST, unregistred user!
select * from 班级 where 姓名 LIKE '%' + Isnull(@a,'') + '%')
存储过程中。
用这句在@a为空的时候能查出所有记录。但如是a@有内容(比如a@是张三),这时查询的是模糊值。
我想问怎么实现在a@为空时查询所有,在有内容时查询精确值,多谢
 
在查询之前对@a进行判断吧
if @A is null
set @a=...
else
set @a='xt'
 
有没有更简单的,判断如果内容多,就太麻烦了
 
if isnull(@a,'')='' then
select * from 班级
else
select * from 班级 where 姓名 LIKE '%' + @a + '%'
 
判断如果内容多,就太麻烦了
怎么动态生成呢
 
地质灾害说的没有错,用判断语句比较现实些,不然在存储过程要出现不知道名的错误,你最好在select中把他们都标清楚,这样出错率会小些。
 
这样对于查询少的可以,但如果多了,比如这样
select * from 班级 where 姓名 LIKE '%' + Isnull(@a,'') + '%')
and 年龄 LIKE '%' + Isnull(@b,'') + '%')
and 入学时间 LIKE '%' + Isnull(@c,'') + '%')
and 成绩 LIKE '%' + Isnull(@d'') + '%')
.....
难道要一句一句的判断吗?
还有时间格式转换成字符格式用什么,谢谢名位大侠了!!!
 
嘿嘿,您就不能不用存储过程么?——SP的好处是预编译过,可以“不加思索”的执行,
但并不适合本贴中条件十分灵活的形式(更何况还要考虑今后增加表字段的情况)。对于本
问题而言,在Delphi中直接生成带有Where的完整Select语句,交给数据库去执行,这才是
最经济的方案。
 
说的也是。
 
后退
顶部