zoukankan      html  css  js  c++  java
  • 【ORACLE】IN 后跟&参数字符串的处理方法

    今天写尼日利亚BOSS,数据修复脚本时遇到一个问题, 参数字符串无法再IN中使用,例如:想要完成下面的查询
    select * From customeren c where c.customercodestr in (&CODE);
     
    最先想到的是用regexp_replace来拼接字符串,将中间符号替换成‘,’ 以便后续拼接
     
    SELECT '''' || regexp_replace('TTP0001;TTP0002;TTP0003', ';', ''',''') || '''' FROM dual;
    测试了下结果很满意: 'TTP0001','TTP0002','TTP0003' 
     
    可是执行时,却还是不行查询不到任何结果,
    select *
             From customeren c
            where c.customercodestr in
                  (SELECT '''' || regexp_replace('TTP0001;TTP0002;TTP0003',
                                                 ';',
                                                 ''',''') || ''''
                     FROM dual)
     
    猜测主要原因是, IN 后面的括号内,不能用字符串拼接,括号内并不是一个字符串
     
    最后通过字符串截取拼接实现: 示列SQL 如下 
    select *
      From customeren c
     where c.customercodestr in
           (SELECT REGEXP_SUBSTR('&客户编码', '[^;]+', 1, rownum)
              FROM DUAL
            CONNECT BY ROWNUM <=
                       LENGTH('&客户编码') - LENGTH(REPLACE('&客户编码', ';', '')) + 1)
  • 相关阅读:
    信令基本概念
    CMMI
    关于OpenDataSource, OpenRowSet
    冒泡排序
    使用Sqlldr向oracle导入数据
    PowerDesigner生成sql和反向工程生成ER图的问题
    2021.1.4 学习总结
    12天 —— 关于生活与目标的思考【2020.8.5~2020.8.17】
    大一暑假学习总结(七)【2020.7.28~2020.8.4】
    学习:用javascript增加、删除行(转)
  • 原文地址:https://www.cnblogs.com/liuyongcn/p/5553958.html
Copyright © 2011-2022 走看看