背景:有伙伴组装了一个复杂的filter,大概期望是:a=a and ((b=b and c=c) or (d=d and e=e) or (f=f and g=g)) 类似这种
问题:构造qfilter就是正常的and和or的链式构造,但是最后打印出来的filter是这样的:a=a and (b=b and c=c or d=d and e=e or f=f and g=g)。可以看到,默认没有携带括号,尝试分析原因。
分析:改动其中几个and的关联变成or,发现会有括号,因为qfilter是平台比较基础的能力,基本不会有bug,所以怀疑这两个语句是一致的。本地数据库是mysql,所以查了mysql的 and 和 or ,发现mysql的 and 执行会优先于 or,那其实第二条和第一条的语句是一模一样的,问题解决(其实就没有问题【emoji】)
最后:这里只看了mysql的,其实平台底层可以兼容其他类型的数据库,不确定其他类型的是不是和mysql一样,但是底层执行的时候是先会把代码翻译成ksql,盲猜ksql应该会有类似的特性,具体的也不去深究了,记录一下。
如果发现文章有什么问题欢迎大家指出,我将积极验证修改。如果有帮到你,还请来一波三连:关注,点赞,收藏【emoji】【emoji】。觉得有用也可以分享到公司群,惠及其他同事,感谢您的耐心观看~~~
最后拉个票:在参加社区3周年的活动,大家帮忙进下面链接里点个赞,已经点过的不要取消点赞哈,感谢各位大帅哥大漂亮【emoji】【emoji】
hello~我正在参与金蝶云社区三周年领航者成长故事打榜,点击链接帮忙点赞,还有机会获得彩蛋奖品哦! https://club.kdcloud.com/article/188313160498153216
推荐阅读
![金蝶云社区缓存相关问题与优化](/download?fileName=01002f329f70d59c457a8a88eaa06418fe04.jpeg)
缓存相关问题与优化
- 文章
673
记一次代码赋值单据体数据重复的问题
背景: 自己实现一个左树右表的结构,右表要求可编辑,通过单据体实现。点击左侧节点数据刷新右表单据体数据。 问题: 1. 涉及到单据体赋值,贴一段有问题的代码 D …
- 文章
142
记一次树形基础资料代码修改的问题
场景: 自己画一个左树右表的页面,左边用树形控件渲染一个树形基础资料,现在要实现树节点拖动修改的功能。 分析: 树控件本身支持拖动,所以代码做树形基础资料数据u …
- 文章
77