参数为空选择全部的问题

SELECT * FROM 订单 where 1=1${if(len(area) == 0,"","and 货主地区 = '" + area + "'")} 


这个sql里参数为空选择全部里 where1=2 和  and  代表什么意思?  小白 求告知?

FineReport 周忠熙 发布于 2018-11-12 21:36
1min目标场景问卷 立即参与
回答问题
悬赏:4 F币 + 添加悬赏
提示:增加悬赏、完善问题、追问等操作,可使您的问题被置顶,并向所有关注者发送通知
共3回答
最佳回答
3
lefantianLv2初级互助
发布于2018-11-12 21:53

where 1=1${if(len(area) == 0,"","and 货主地区 = '" + area + "'")} 我对这句解析一下,当参数为空时就是len(area) == 0,那么就为""空串代表什么也不干,当参数不为空时len(area) ==0就不成立,这时就会在where 1=1后面拼接and 货主地区 = area这个条件.

最佳回答
1
sidmaoLv4初级互助
发布于2018-11-12 21:51
SELECT * FROM 订单 where 1=1${if(len(area) == 0,"","and 货主地区 = '" + area + "'")}

$ {area}参数名,

if(len(area)== 0,“”,“和货主地区= ='”+ area +“'”)当参数len(area)字串长度等于0时,如为空SQL与法则会

SELECT * FROM 订单 where 1=1

  如果字串长度不等于0时SQL

SELECT * FROM 订单 where 1=1 and 货主地区 =  ${area}

$ {area}参数值为你填入或预设的值

where 1=1 为真,为了当参数为空时也可以执行SQL所以需要加1=1不然没有加SQL会错误

AND 是并且

最佳回答
0
FaintLv6中级互助
发布于2018-11-12 21:37

1=2代表错误,也就是什么都筛选不到,1=1就是全都选的到,and就是并且

  • 周忠熙 周忠熙(提问者) 是不是可以这样理解 参数为空选择全部 就是必须要有 where 1=1 和 and
    2018-11-12 21:47 
  • Faint Faint 回复 周忠熙(提问者) 参数为空选择全部是1=1的作用,参数不为空有筛选效果是and的作用,len判断是否为空,如果为空是where 1=1,如果不为空是where 1=1 and 货主地区=xxx
    2018-11-12 21:49 
  • 5关注人数
  • 1119浏览人数
  • 最后回答于:2018-11-12 21:53
    请选择关闭问题的原因
    确定 取消
    返回顶部