-
ysy123 初学数据Lv2
发表于2023-8-24 14:59
悬赏1
未解决
楼主
模糊查找多选,这样写
if(@ysdw is null or @ysdw='',1=1,dim(FBD_FACT_PAY_BJS_ALL.agency_code) like @ysdw^'%')不生效,需要如何修改?
if(@ysdw is null or @ysdw='',1=1,dim(FBD_FACT_PAY_BJS_ALL.agency_code) like @ysdw^'%')不生效,需要如何修改?
12个回答
<#=mkfilter("dim(FBD_FACT_PAY_BJS_ALL.agency_code) = @ysdw")#>
ysy123 发表于 2023-8-24 17:13
这个不能实现模糊查找
多选是in多个值,模糊匹配是like一个值,这两个一起是要实现什么需求?
多选可以直接用dim
if(len(@ysdw)=0,1=1,dim(FBD_FACT_PAY_BJS_ALL.agency_code) =@ysdw)
模糊匹配 用diminf取参数实际值,可根据需求调整
if(len(@ysdw)=0,1=1,dim(FBD_FACT_PAY_BJS_ALL.agency_code) like '%<#=diminf("维表名称",@ysdw,"$realid")#>%')
diminf参考:
https://bbs.esensoft.com/thread-135211-1-1.html
chestnut 发表于 2023-8-24 18:36
多选是in多个值,模糊匹配是like一个值,这两个一起是要实现什么需求?
多选可以直接用dim
if(len(@ysdw) ...
现在的问题是维表是分层的,比如第一层是101,102,第二层是10101,10201,只选择一个10101是正常的,但是多选10101和10102就会变成101,102,这是什么问题?
ysy123 发表于 2023-8-25 08:32
现在的问题是维表是分层的,比如第一层是101,102,第二层是10101,10201,只选择一个10101是正常的,但 ...
维下拉参数多选,用dim就可以。现在是怎么配置的?
chestnut 发表于 2023-8-25 10:45
维下拉参数多选,用dim就可以。现在是怎么配置的?
if(@ysdw is null or @ysdw='',1=1,dim(left(FBD_FACT_PAY_BJS_ALL.ADMDIV_CODE,6)^FBD_FACT_PAY_BJS_ALL.agency_code) =@ysdw)
chestnut 发表于 2023-8-25 10:45
维下拉参数多选,用dim就可以。现在是怎么配置的?
生成的sql @ysdw变成了520500101,但是我选的是52050010101和52050010202 where (((a.FISCAL_YEAR = '2023') AND (a.XPAY_DATE <= '20230824')) AND ( SUBSTR(a.ADMDIV_CODE,1,6)||a.AGENCY_CODE='520500101' or SUBSTR(a.ADMDIV_CODE,1,6)||a.AGENCY_CODE='520500102') AND (a.ADMDIV_CODE='520500000'))
本帖最后由 chestnut 于 2023-8-25 11:19 编辑
ysy123 发表于 2023-8-25 10:54
选择101001和102001会变成101和102,这种情况如何处理?
dim(left(FBD_FACT_PAY_BJS_ALL.ADMDIV_CODE,6)^FBD_FACT_PAY_BJS_ALL.agency_code) =@ysdw
这个条件没明白,维下拉绑定的维表一般是主题表中字段绑定的维表,为什么这里要拼接字段?