PL / SQL如何将转义序列计为1个字符

时间:2013-06-11 02:18:22

标签: regex oracle plsql escaping

有时我的存储过程将使用包含嵌入式转义(ESC)序列的字符串进行调用。例如:abc&def中的人员类型,存储过程将获得转义的等效内容:abc&def

存储过程需要

  1. 认识到它收到了ESC序列,
  2. 必须在每个ESC序列的字符串计算长度内将其计为1个字符。
  3. 因此对于上面的字符串示例abc&def,它会将其识别为长度为7(表示最初输入的abc&def长度),因此字符&将计为1字符。

    在PL / SQL中有直接的方法吗?我们正在运行11g。

1 个答案:

答案 0 :(得分:4)

你只需要解开字符串。有一个技巧可以记录here

SELECT DBMS_XMLGEN.CONVERT ('abc&def',1)
      ,LENGTH(
         DBMS_XMLGEN.CONVERT ('abc&def',1)
       )
FROM DUAL;

abc&def  7