【问题】
制作一张订单信息报表,有两个输入参数:省份、地区。要求在无参数时查询能显示所有数据。
但是完成后发现,当参数为空时,显示结果不全。
数据库查询如下:
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的数据库查询中,“--”做注释会报出语法错误
转载于:https://blog.51cto.com/10931223/2285428