{a:b}  如上格式,如何查出b字符串!!
  大虾支招!

解决方案 »

  1. 补充,前面还有一个$号,即${a:b}查询出b的值
      

  2. 是不是固定就这样的格式?
    没有其他特殊字符吧?试试这样:SQL> SELECT replace(substr('{dffgf:fdfdf}',instr('{dffgf:fdfdf}',':')+1),'}','') FROM dual;REPLACE(SUBSTR('{DFFGF:FDFDF}'
    ------------------------------
    fdfdfSQL>
      

  3. 前面有其他字符没关系,关键是b字符串后紧跟},然后就结束。
    SQL> SELECT replace(substr('${a:b}',instr('${a:b}',':')+1),'}','') FROM dual;REPLACE(SUBSTR('${A:B}',INSTR(
    ------------------------------
    bSQL> 
      

  4. 前后还有其他的字符串,比如 adasd${a:b}asdasd
      

  5. SQL> WITH temp AS (
      2     SELECT substr('adasd${a:b}asdasd',instr('adasd${a:b}asdasd',':')+1) superstr FROM dual)
      3  SELECT substr(superstr,1,instr(superstr,'}')-1) FROM temp;SUBSTR(SUPERSTR,1,INSTR(SUPERS
    ------------------------------
    bSQL> 
      

  6. SELECT substr(substr('adasd${a:b}asdasd',instr('adasd${a:b}asdasd',':')+1),
           1,
           instr(substr('adasd${a:b}asdasd',instr('adasd${a:b}asdasd',':')+1),'}')-1)FROM dual;
      

  7. --使用正则表达式
    SELECT rtrim(ltrim(regexp_substr('${a:b}', ':(.*)}'), ':'), '}') FROM dual;
      

类似问题 »