IF嵌套问题

想问一下,下面那样的IF语句应该怎么写,能让里面的第二个IF语句能生效呢?,仅限于筛选B表的SQL语句,求大佬帮解决

         SELECT *

           FROM DUAL   A

          WHERE 1 = 1

             ${IF(LEN(AA)= 0 ,

                  "AND ROWNUM   = (SELECT ROWNUM 

                                    FROM DUAL B

                                   WHERE 1 = 1

                                     AND ROWID   = '"+AA+"'

                                     IF(LEN(BB)=0,"AND ROWNUM = 1","AND ROWNUM = '"+BB+"'" )

                               ")}

             ,'')

FineReport xingcheng1226 发布于 2022-12-23 15:33 (编辑于 2022-12-23 15:39)
1min目标场景问卷 立即参与
回答问题
悬赏:3 F币 + 添加悬赏
提示:增加悬赏、完善问题、追问等操作,可使您的问题被置顶,并向所有关注者发送通知
共2回答
最佳回答
0
yzm339714Lv6中级互助
发布于2022-12-23 15:35(编辑于 2022-12-23 16:00)

 SELECT *

           FROM DUAL   

          WHERE 1 = 1

             ${IF(LEN(AA)= 0 ,

                  "AND ROWNUM   = (SELECT ROWNUM 

                                    FROM DUAL A

                                   WHERE 1 = 1

                                     AND ROWID   = '"+AA+"'" +

                                     IF(LEN(BB)=0,"AND ROWNUM = 1","AND ROWNUM = '"+BB+"'" )

                             +")" ,"" )}

  • xingcheng1226 xingcheng1226(提问者) 刚才表达错了,问题已更新,麻烦大佬再看一下呢
    2022-12-23 15:38 
  • yzm339714 yzm339714 回复 xingcheng1226(提问者) 答案修改了,你再试试呢
    2022-12-23 15:41 
  • xingcheng1226 xingcheng1226(提问者) 对对对,这个效果可以实现,为什么写了这么多双引号呢?
    2022-12-23 15:51 
  • yzm339714 yzm339714 回复 xingcheng1226(提问者) 首先 ROWID = \'\"+AA+\"\' 这你是要把 AA 加上引号嘛 , 那你 AA + 的后面 肯定也要嘛 并且 你后面跟的是另一个公式,而不是固定的字符串,所以需要分开, 所以 + \"\'\" + 这个才是完整的结构嘛。 最后一个 +\")\" 是因为 你前面有 ROWNUM = (SELECT 左括号了, 这最后结束肯定也要有反括号嘛
    2022-12-23 15:55 
  • snrtuemc snrtuemc 回复 xingcheng1226(提问者) 这个会对,你的if语句还缺少一个条件呢。。。。
    2022-12-23 15:58 
最佳回答
0
snrtuemcLv8专家互助
发布于2022-12-23 15:38

${IF(LEN(AA)= 0 

    ,"SELECT SYSDATE 

              FROM DUAL"

    ,"SELECT *

              FROM DUAL   

             WHERE 1 = 1

                  AND ROWNUM   = (SELECT ROWNUM 

                                    FROM DUAL A

                                   WHERE 1 = 1

                                     AND ROWID   = '"+AA+"'"+

                                     IF(LEN(BB)=0,"AND ROWNUM = 1","AND ROWNUM = '"+BB+"'" )

                               +")")}

  • xingcheng1226 xingcheng1226(提问者) 刚才表达错了,问题已更新,麻烦大佬再看一下呢
    2022-12-23 15:40 
  • snrtuemc snrtuemc 回复 xingcheng1226(提问者) 你第一个才对,第二个你的AA就冲突了
    2022-12-23 15:43 
  • 2关注人数
  • 269浏览人数
  • 最后回答于:2022-12-23 16:00
    请选择关闭问题的原因
    确定 取消
    返回顶部