我的 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)........
现在我的查询有很多字段(?-->这是我将数据用于过滤器的地方),用户可以在这些字段上查询,所以我正在使用合并但使用合并的缺点是它不会给我空值当我想获取员工表中存在的所有数据时,为了获取空值,我使用了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 查询浏览器来测试我的查询
提前致谢