怎样在数据集的条件中使用sql函数

有sql函数function1(userId),会输出条件,类似“ AND .... ”,怎样在数据集中的where后面使用function1? 

where 1 = 1   

${1=1, function1(userId), function1(userId)}

这样写查询结果不会发生变化,${}只能使用fr自带函数?

FineReport touip 发布于 2019-1-23 18:26
1min目标场景问卷 立即参与
回答问题
悬赏:4 F币 + 添加悬赏
提示:增加悬赏、完善问题、追问等操作,可使您的问题被置顶,并向所有关注者发送通知
共3回答
最佳回答
0
黄源Lv6中级互助
发布于2019-1-24 08:35(编辑于 2019-1-24 10:18)

where 1=1 ${if(isnull(userId),""," and function1('"+userId+"')")}

把函数结果拼到sql where 1=1+sql(数据源,"select function1('"+${userid}+"') from 表 ",1,1)

  • touip touip(提问者) function1为sql函数,放在${}不会输出
    2019-01-24 09:37 
  • 黄源 黄源 回复 touip(提问者) 你只传函数参数啊,函数是拼在sql的条件里在啊
    2019-01-24 09:39 
  • touip touip(提问者) 回复 黄源 function1这个函数会输出限制条件,需要拼接在where后面,这样的写法不会执行,和没写是一样的
    2019-01-24 09:50 
  • 黄源 黄源 回复 touip(提问者) 这不是拼在where后面吗,你要是能确定userId不为空,可以直接写成 where 1=1 and function1(\'${userId}\')
    2019-01-24 09:52 
  • touip touip(提问者) 回复 黄源 你可以测试下,则这样写是无效的,mysql函数: create FUNCTION function1(userId VARCHAR(64)) RETURNS VARCHAR(100) BEGIN if (userId=\'123\') THEN RETURN \" AND 1<>1 \"; ELSE RETURN \"\"; END IF; END
    2019-01-24 10:00 
最佳回答
0
zsh331Lv8专家互助
发布于2019-1-23 20:50(编辑于 2019-1-23 20:50)
格式参考:。。。where 1=1 ${if(条件, " and function1(userId)", " and function1(userId)")}


最佳回答
0
touipLv0见习互助
发布于2019-1-24 10:47

需采用SQL函数才能调用function1

  • 黄源 黄源 呵呵....
    2019-01-24 10:59 
  • 兔子酱 兔子酱 你好,最佳答案是给帮助到你的番薯的,已后台重新采纳,注意此操作会扣除你50信用分,低于800将无法提问,请谨慎操作
    2019-01-24 11:08 
  • touip touip(提问者) 回复 兔子酱 用sql这个函数,是我自己查论坛后试出来,没看黄源的回复,我现在还有多少信用分?
    2019-01-24 11:17 
  • 2关注人数
  • 814浏览人数
  • 最后回答于:2019-1-24 10:47
    请选择关闭问题的原因
    确定 取消
    返回顶部