finereport里SQL中写1=1具体是什么含义,为什么?

为什么在fine report里写SQL中要写1=1不太理解,这个是什么语法啊?之前写SQL都没遇到过。1=1具体是什么含义,还有在判断里加入的,哪个大神可以帮忙介绍下具体内容啊?

FineReport 万能补丁 发布于 2022-12-12 11:05
1min目标场景问卷 立即参与
回答问题
悬赏:3 F币 + 添加悬赏
提示:增加悬赏、完善问题、追问等操作,可使您的问题被置顶,并向所有关注者发送通知
共4回答
最佳回答
1
Z4u3z1Lv6专家互助
发布于2022-12-12 11:06(编辑于 2022-12-12 11:09)

方便后面拼接 条件 使用AND 时报错

----------

举个例子

SELECT * FROM STSCORE WHERE 1=1 ${IF(LEN(CLASSNO_)==0,""," AND CLASSNO='"+CLASSNO+"'")}${IF(LEN(STUDENTNO_)==0,""," AND STUDENTNO='"+STUDENTNO_+"'")}

如果不用 1=1

则判断起来麻烦

SELECT * FROM STSCORE WHERE${IF(LEN(CLASSNO_)==0,""," CLASSNO='"+CLASSNO+"'")}${IF(LEN(STUDENTNO_)==0,"",IF(LEN(CLASSNO_)==0," STUDENTNO='"+STUDENTNO_+"'""," AND STUDENTNO='"+STUDENTNO_+"'")}

  • 万能补丁 万能补丁(提问者) 原理我懂,但为什么不能省去这个1=1,然后不写and,但这样会保存,1=1这个是结果为真就运行,还是什么含义不明白
    2022-12-12 11:09 
  • Z4u3z1 Z4u3z1 回复 万能补丁(提问者) 你看我举得的例子
    2022-12-12 11:10 
  • powerli powerli 回复 万能补丁(提问者) 你不写1=1 的话 只有个where 如果后边的条件都不成立 ,就会sql报错 就类似于 select * from table where 后后边没东西了
    2022-12-12 11:10 
  • 万能补丁 万能补丁(提问者) 回复 powerli 哦哦,明白了。1=1的含义就是判断下SQL不让出现语法错误,只要等号两边是对的就代表真的含义就可以了,and两边也是能运行的预计而不是 真 and 空 这样会出现错误
    2022-12-12 11:22 
最佳回答
0
用户k6280494Lv6资深互助
发布于2022-12-12 11:06

1=1 是为后写if条件里面加and

最佳回答
0
RiveryLv5中级互助
发布于2022-12-12 11:08

为了恒成立 

比如

where  

${if(len(a)==0,"","and b='5'")}

如果 你a参数不为空,就是 where and b='5' 有语法错误

但是加上 1=1

where  1=1

${if(len(a)==0,"","and b='5'")}

a参数不为空,就是 where 1=1 and b='5',就没有语法错误

最佳回答
0
RFLJLv4见习互助
发布于2022-12-12 11:09

绝对成立条件,无论你后续有没有条件,都会查询,更方便if判断+and条件

  • 3关注人数
  • 299浏览人数
  • 最后回答于:2022-12-12 11:09
    请选择关闭问题的原因
    确定 取消
    返回顶部