1

ストアド プロシージャが、埋め込まれたエスケープ (ESC) シーケンスを含む文字列で呼び出されることがあります。例: person と入力abc&defすると、ストアド プロシージャはエスケープされた同等の値を取得します: abc&def

ストアド プロシージャは、

  1. ESC シーケンスを受信したことを認識し、
  2. 文字列の長さの計算中に、各 ESC シーケンスを 1 文字としてカウントする必要があります。

したがって、上記の文字列の例ではabc&def、これは長さ 7 (最初に入力された の長さを表すabc&def) であると認識されるため、文字&は 1 文字としてカウントされます。

PL/SQLでこれを行う簡単な方法はありますか? 11gを実行しています。

4

1 に答える 1

4

文字列をエスケープ解除するだけです。ここに文書化されたそれを行うためのトリックがあります:

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

abc&def  7
于 2013-06-11T04:03:44.817 に答える