某天业务提出了一个需求:想要在邮件中显示html格式文件,如下图所示:
思考了下,可以采用如下sql实现:
SELECT replace(GROUP_concat(html_body.info),',','') AS v_info
FROM
(SELECT '<table border ="1">' AS info
FROM dual
UNION ALL
SELECT '<tr><th>l_date</th><th>tbl_name</th><th>adnormal_code</th><th>adnormal_info</th></tr>' AS info
FROM dual
UNION ALL
SELECT concat('<tr><td align="center">',mm.l_date,'</td><td align="center">',mm.tbl_name,'</td><td align="center">',mm.adnormal_code,'</td><td align="center">',mm.adnormal_info,'</td></tr>') AS info
FROM prc_monitor_adnormal_info mm
UNION ALL
SELECT '</table>' AS info
FROM dual) html_body
注意:但是在实际操作过程中,发现一个问题。
*
那就是在使用sql语句查询时,我们使用group_concat的形式对字段进行操作后使得查询出来的字段太长,会造成不能完全显示的问题。
解决方法:
数据库设置的话可以在查询前面:
SET SESSION group_concat_max_len = 10240;
or
SET GLOBAL group_concat_max_len = 10240;
java的话可以在查询前:
jdbcTemplat.execute("SET SESSION group_concat_max_len = 10240")