过滤条件表达式,该如何解决

来源:学生作业帮助网 编辑:作业帮 时间:2024/04/28 01:38:06

过滤条件表达式,该如何解决
过滤条件表达式,该如何解决

过滤条件表达式,该如何解决
过滤条件表达式
ds_equip.setfilter( "range LIKE '%AB%' ")
ds_equip.filter( )
ds_equip.retrieve()
ds_criterion.setfilter( "range LIKE '%珠宝%' and range LIKE '%贵金属%' ")
ds_criterion.filter( )
ds_criterion.retrieve()
------解决方案--------------------------------------------------------在表达式里面使用like要加括号,否则filter会返回错误的,具体原因查一下PB运算符的优先级就知道了,
另外,也可以改成pos函数来实现,可以不加括号的,
ds_criterion.setfilter( "(range LIKE '%珠宝%') and (range LIKE '%贵金属%' )")
ds_criterion.filter( )
ds_criterion.retrieve()
------解决方案--------------------------------------------------------一、确定是要加括号的问题,你看一下setfilter的返回值就是了!
探讨.不是吧,我没加括号也很正常咧,加了的话检索不出数据
ds_criterion.setfilter( "range LIKE '%珠宝%' and range LIKE '%贵金属%' ")……ds_criterion.setfilter( "range LIKE '%珠宝%' or range LIKE '%贵金属%' ")……另外用上面两种检索出来的都是全部数据,过滤条件好像没生效
------解决方案--------------------------------------------------------这是入门级的问题,不存在会出错的,你加个括号就知道了!
一、过滤包括含贵金属的珠宝
ds_criterion.setfilter( "(range LIKE '%珠宝%') and (range LIKE '%贵金属%') ")
二、过滤珠宝或是贵金属;
ds_criterion.setfilter( "(range LIKE '%珠宝%') or(range LIKE '%贵金属%') ")
------解决方案--------------------------------------------------------ds_criterion.filter( )