【问题】
制作一张订单信息报表,有两个输入参数:省份、地区。要求在无参数时查询能显示所有数据。
但是完成后发现,当参数为空时,显示结果不全。
数据库查询如下:
SELECT * FROM 订单 where ${ if( len(省份)==0, "1=1", "货主省份='" + 省份 + "'" ) } ${ if( len(省份)==0, "and 货主地区='" + 地区 + "'", if( len(地区)==0, "", "and 货主地区='" + 地区 + "'" ) ) }
【原因】
缺少了省份与地区都为空时的判断。
【解决】
正确的数据库查询SQL:
SELECT * FROM 订单 where ${ if( len(省份)!=0, if( len(地区)!=0, "货主省份='" + 省份 + "' and 货主地区='" + 地区 + "'", "货主省份='" + 省份 + "'" ), if( len(地区)!=0, "货主地区='" + 地区 + "'", "1=1" ) ) }
【注意点】
在普通的SQL查询中,注释是使用“--”来完成的
在FR的数据库查询中,“--”做注释会报出语法错误