This is my pen. の連続した半角スペースを、一つに置換する。 最大で20個の半角スペースが連続する。 置換後の文字列 This is my pen.
--■■■正規表現を使用する方法(10g以降)■■■
select
RegExp_Replace('This is my pen.',' {2,}',' ')
from dual;
--■■■Replace関数を使用する方法1■■■
select
replace(
replace(
replace('This is my pen.'
,' ',' ' || '禁則文字')
,'禁則文字' || ' ')
,'禁則文字')
from dual;
--■■■Replace関数を使用する方法2■■■
select
Replace(
Replace(
Replace(
Replace(
Replace('This is my pen.',' ',' '),
' ',' '),
' ',' '),
' ',' '),
' ',' ')
from dual;
Replace関数を使用する方法2では、 最大で20個の半角スペースが連続するので、 Replace関数で、 Log2の20(約4.32)の小数を切り上げた数の回数分(5回)、空白2文字を1文字に置換してます。 ■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■ Replace関数を使用する方法1についての考察 case1 AAAAAAAAAAAAAAAAAAAAAAAAA replace AA to AB ABABABABABABABABABABABABA remove BA A remove B A case2 AAAAAAAAAAAAAAAAAAAAAAAA replace AA to AB ABABABABABABABABABABABAB remove BA AB remove B A case3 A replace AA to AB A remove BA A remove B A case4 AA replace AA to AB AB remove BA AB remove B A Replace multiple whitespaces in a string with single one