【发布时间】:2013-07-14 07:10:14
【问题描述】:
我的 Mysql 查询为:
select RecordID,ID,Name,Description,RecordDateTimeUTC,Location from
eemployee where RecordID like ? and(isNull(RecordDateTimeUTC) OR RecordDateTimeUTC= CASE WHEN COALESCE(?,'') = '' THEN RecordDateTimeUTC ELSE ? END)........
现在我的查询有很多字段(?-->这是我将我的数据用于过滤器的地方)用户可以查询,所以我使用 coalesce 但使用的缺点coalesce 是 当我想获取员工表中存在的所有数据时它不会给我空值,所以为了获取空值我使用了 isNull 功能。
现在我正在为两个用例测试上述查询
1-->用户可以在 RecordID 中传递百分比:-在这种情况下,他应该获取所有数据,无论是空值还是非空值:
select RecordID,ID,Name,Description,RecordDateTimeUTC,Location from
eemployee where RecordID like '%'
and(isNull(RecordDateTimeUTC) OR RecordDateTimeUTC= CASE WHEN COALESCE('','') = '' THEN RecordDateTimeUTC ELSE '' END)
2-->用户可以根据RecordDateTimeUTC过滤数据:-如果用户传递了这个参数,那么他应该得到满足上述过滤条件的所有非空数据。:-
select RecordID,ID,Name,Description,RecordDateTimeUTC,Location from
eemployee where RecordID like '%' and(isNull(RecordDateTimeUTC) OR RecordDateTimeUTC= CASE WHEN COALESCE('2012-07-09 11:11:00','') = '' THEN RecordDateTimeUTC ELSE '2012-07-09 11:11:00' END)
对于第一个用例,它工作正常,但对于第二个用例,它给我过滤数据以及空数据
那么我的查询应该是什么,以便上述单个查询支持我的两个用例。 我正在使用 MYSQl 查询浏览器来测试我的查询
提前致谢
【问题讨论】:
标签: mysql