求助,这个sql语句里为啥要where1=1?

image.png

FineReport HmjijsbZ 发布于 2024-5-6 10:40
1min目标场景问卷 立即参与
回答问题
悬赏:3 F币 + 添加悬赏
提示:增加悬赏、完善问题、追问等操作,可使您的问题被置顶,并向所有关注者发送通知
共3回答
最佳回答
0
snrtuemcLv8专家互助
发布于2024-5-6 10:41

确保下面的参数为空时候,where 后面有1=1的条件

不然会报错

最佳回答
0
菜鸟007号Lv5见习互助
发布于2024-5-6 10:41(编辑于 2024-5-6 10:42)

因为第一个参数 带 and 了,参数为空的时候 where 条件 1=1  不报错

最佳回答
0
Z4u3z1Lv6专家互助
发布于2024-5-6 10:54

其实是为了方便正确拼接SQL

比如

SELECT * FROM TABLE WHERE 1=1 ${IF(LEN(控件1)==0,""," and 字段1='"+控件1+"'")} ${IF(LEN(控件2)==0,""," and 字段2='"+控件2+"'")}

它等效于

SELECT * FROM TABLE WHERE ${IF(LEN(控件1)==0,""," where 字段1='"+控件1+"'")} ${IF(LEN(控件2)==0,"",if(len(控件1)==0," where 字段2='"+控件2+"'"," and 字段2='"+控件2+"'"))}

第二种就明显容易拼接错误

  • 3关注人数
  • 106浏览人数
  • 最后回答于:2024-5-6 10:54
    请选择关闭问题的原因
    确定 取消
    返回顶部