参数允许多选,过滤条件要写like条件咋写

5353
6

18516843105 数据达人Lv4

发表于2018-9-26 10:27

悬赏1

已解决

楼主
过滤条件写的: xxx like @srkm+'%'

计算生成的SQL是: LIKE '4001' OR XXX LIKE '4101' OR XXX LIKE '4301%'

想要每个后面都有百分号,即like '4001%' OR LIKE '4101%' or LIKE '4301%'

最近看过此主题的会员

axin

esen_5J3HPAXDRS

esen_5ID1Y27813

jrjrjr

huyong95711

esen_4XL2IVJCG8

林檬

wuq

esen_5ECSX7TZGX

esen_51JBYX12HL

最佳答案

wuq

发表于2018-9-26 10:27

只看该作者

取消 关注该作者的回复

如果是枚举型的,用下面这个数组,我试过,是可以的,对应参数名称和主题表名称自行更改:<#=@p.value.split("\|").select(true,"O_T_YW_ZFCF_AJXX.ZFLB like '"+ @+"%'").join(" or ")#>
6个回答

只看楼主

huxh 小试身手Lv3

发表于2018-9-26 10:40

只看该作者

取消 关注该作者的回复

沙发

如果 xxx 与 @srkm参数的前四位相等,可以对xxx使用截取函数,取前四位后再进行计算 ,left(xxx,4) like @srkm

18516843105 数据达人Lv4

发表于2018-9-26 10:41

只看该作者

取消 关注该作者的回复

板凳

huxh 发表于 2018-9-26 10:40
如果 xxx 与 @srkm参数的前四位相等,可以对xxx使用截取函数,取前四位后再进行计算 ,left(xxx,4) like @s ...

不行,位数不确定

tangmq 数据达人Lv4

发表于2018-9-26 10:43

只看该作者

取消 关注该作者的回复

地板

根据问题描述,@srkm 是 多选。@srkm是否是维表呢?
如果是关联维表,这种过滤就比较简单了,dim(XXXX)=@srkm 是可以做到这些过滤的。
如果无法用维表思路解决,我看你的@srkm的个数都相同,是否可以left(xxxx,4) =@srkm,直接就取前四位跟参数去匹配,而不是用like的形式

wuq 初学数据Lv2

发表于2018-9-26 10:43

只看该作者

取消 关注该作者的回复

5#

用数组写过滤条件试试:例如:<#=(@srkm.values).select(true,"DW_D05.C03 like '"+ @+"%'").join(" or ")#>

韦韬然 数据老手Lv5

发表于2018-9-26 10:43

只看该作者

取消 关注该作者的回复

6#

18516843105 发表于 2018-9-26 10:41
不行,位数不确定

一楼的意思是前四位相等,,不是位数确认不确认,,,如果不是前四位这么过滤为什么只在最后加%

wuq 初学数据Lv2

发表于2018-9-26 10:27

只看该作者

取消 关注该作者的回复

7#

如果是枚举型的,用下面这个数组,我试过,是可以的,对应参数名称和主题表名称自行更改:<#=@p.value.split("\|").select(true,"O_T_YW_ZFCF_AJXX.ZFLB like '"+ @+"%'").join(" or ")#>

登录后可回答问题,请登录注册

快速回复 返回顶部 返回列表

小时

全天响应

分钟

快速处理问题

工程师强势助力

明星产品
解决方案
联系合作

400咨询:400-0011-866

技术支持QQ:400-0011-866(工作日9:00-18:00)

产品建议邮箱yixin@esensoft.com

关注我们

扫TA学习更多干货

一对一专家交流

版权所有© 2006-2024 北京亿信华辰软件有限责任公司 京ICP备07017321号 京公网安备11010802016281号