STRING
内の複数の(連続した)水平スペースを単一の水平スペースに置き換えるFUNCTION
があります。Oracle - String - 句読点書式設定関数
STR_ORIG = 'Hello World'
STR_NEW = 'Hello World'
機能は次のとおりです。
CREATE OR REPLACE FUNCTION CP_RDN_PUNCT(
INS VARCHAR2)
RETURN VARCHAR2
AS
OUTSTR VARCHAR2(4000);
STR VARCHAR2(4000);
BEGIN
STR := INS;
WHILE (INSTR(STR,' ',1) > 0)
LOOP
OUTSTR := OUTSTR || ' ' || SUBSTR(STR,1,INSTR(STR,' ',1) - 1);
STR := TRIM(BOTH ' ' FROM SUBSTR(STR,INSTR(STR,' ',1)));
END LOOP;
OUTSTR := OUTSTR || ' ' || TRIM(STR);
RETURN TRIM(OUTSTR);
END CP_RDN_PUNCT;
しかし、私はこのFUNCTION
に拡大したいと思いますので、基本的な句読点のフォーマット(コンマ、ピリオドや括弧)を補正することが可能です。しかし、FUNCTIONが複数の(連続した)水平スペースを引き続き除去することが重要です。
たとえば、
出力は、私が使用したい'Hello (Marc)'
ルールはかなり基本的なものになるだろうSTR_ORIG = 'Hello(Marc)'
場合は出力が'Hello. Marc'
なるSTR_ORIG = 'Hello.Marc'
場合は出力が'Hello, Marc'
なるSTR_ORIG = 'Hello , Marc'
場合:
Comma;...............One HORIZONTAL SPACE after a Comma.
No HORIZONTAL SPACE before a Comma.
Full Stop;...........One HORIZONTAL SPACE after a Full Stop.
No HORIZONTAL SPACE before a Full Stop.
Open Parenthesis;....No HORIZONTAL SPACE after an Open Parenthesis.
One HORIZONTAL SPACE before an Open Parenthesis.
Closed Parenthesis;..One HORIZONTAL SPACE after an Closed Parenthesis*.
No HORIZONTAL SPACE before an Closed Parenthesis.
*注:閉じた括弧の直後にカンマまたはフルストップがある場合、 'One HORIZONTAL SPACE
'の代わりに 'No HORIZONTAL SPACE
'ルールが使用されます。
私は、純粋なSQL(REG_EXP
)を使用して調査しましたが、コードが非常に乱雑になり始めていることが主な原因です(主にデータの不一致が原因です)。また、今後ルールを追加したい場合(例:アンダースコアのルール)、私はFUNCTION
を維持しやすくすると仮定しています。しかし、いつものように、私は専門家からの提案に公開しています。
事前に感謝します。
これはすばらしいです、@ Kaushik Nayak!これに取り組む時間を取ってくれて本当にありがとう - 多くのありがとう。 – MAndrews