mysql 、spring的jdbctemplete的问题

问题1:
[code="java"]
public Map getUserAuthorize(String userId) {
Map m = this.getJdbcTemplate().queryForMap(
"select audio_date,IF((audio_date < NOW()),'过期' ,'未过期' ) as audioStatus,video_date," +
"IF((video_date < NOW()),'过期' ,'未过期' ) as videoStatus,live_date,last_date from auth.user_authorize where user_id= ?", new String[]{userId});
return m;
}
[/code]

这是我获取map的一个方法,可是去到的map为什么是这样的:
[code="java"]
{audio_date=2015-04-27, =未过期, video_date=2014-08-27, live_date=2015-12-27, last_date=2013-04-27 12:01:27.0}
[/code]
其中一个key的值为'' 。 [code="java"]=未过期[/code]

问题2:
1)mysql 查询时当有0行时,ifnull(column)不管用,能不能将字段处理成null
2)我记得oracle如果记录0行的话,返回的行内字段好像就是null?

问题1:
可以在select外面再包一层select,并且指定列名,如:
select audio_date, audioStatus, video_date, videoStatus,live_date, last_date from (
select audio_date,IF((audio_date < NOW()),'过期' ,'未过期' ) as audioStatus,video_date,IF((video_date < NOW()),'过期' ,'未过期' ) as videoStatus,live_date,last_date from auth.user_authorize where user_id= ?) temp

问题2:
mysql的ifnull函数,oracle一般用的是decode函数
其实记录为0行的话,不管是mysql的ifnull、还是oracle的decode都不管用,因为都没有行记录,该函数根本就没执行吧。除非你变通一下,先执行count函数判断count结果