操作用户有多个角色,如何拼接到SQL里

请教,操作用户有多个角色,如何拼接到SQL里?

想判断一个操作用户是否只包含两个特定权限,如果是就拼接一个查询条件到where中。

现在按照下面拼接后,($fine_role="角色A,角色B")的结果是false。

select * from table

where ${if($fine_role="角色A,角色B")," and 字段='666'","")}

FineReport SQL 有点小事儿 发布于 2022-9-6 08:26
1min目标场景问卷 立即参与
回答问题
悬赏:3 F币 + 添加悬赏
提示:增加悬赏、完善问题、追问等操作,可使您的问题被置顶,并向所有关注者发送通知
共2回答
最佳回答
0
weibwLv7高级互助
发布于2022-9-6 08:33(编辑于 2022-9-6 08:35)

$fine_role返回的是数组  格式应该是  ["角色1","角色2"]

你的应该写成这样

select * from table

where ${if($fine_role=["角色A","角色B"])," and 字段='666'","")}

这样就能保证角色必须是角色A+角色B才能查询

  • 有点小事儿 有点小事儿(提问者) 两个角色有先后顺序吗?
    2022-09-06 08:44 
  • weibw weibw 回复 有点小事儿(提问者) fine_role返回的是有顺序的,所以你给的结果最好也是一模一样的顺序。不然的话你就得把返回的结果再排个序,会有些麻烦
    2022-09-06 08:46 
  • weibw weibw 回复 有点小事儿(提问者) 如果你实在没办法确认顺序的话,可以将两边都用SORTARRAY()函数排一下序
    2022-09-06 09:01 
  • 有点小事儿 有点小事儿(提问者) 回复 weibw 感谢感谢
    2022-09-06 09:10 
最佳回答
0
snrtuemcLv8专家互助
发布于2022-9-6 08:32(编辑于 2022-9-6 08:32)

select * from table

where 1=1

${if(or(find("角色A",fine_role)>0,find("角色B",fine_role)>0)," and 字段='666'","")}

  • 有点小事儿 有点小事儿(提问者) 感谢,不过和我想要的答案不一样,是楼上哥们说那样,就怕出现如果操作用户再多一个角色的情况,您这个角色校验就过了
    2022-09-06 09:12 
  • 2关注人数
  • 419浏览人数
  • 最后回答于:2022-9-6 08:35
    请选择关闭问题的原因
    确定 取消
    返回顶部