英数字の文字列があります。私も1つの番号を持っています。文字列は常にこの番号で始まります。この数値を文字列から分離し、文字列の残りの部分を取得するにはどうすればよいですか?
例: 文字列 => 21fgggg21.lkkk および数値 => 21
結果=> fgggg21.lkkk
また
文字列 => 215699898.55fff および数値 => 2
結果=> 15699898.55fff
ヒントをいただければ幸いです。ありがとう。
substr(string, length(number)+1)
また
regexp_replace(string, '^'||number)
を使用することもできますREGEXP_REPLACE
。文字列の先頭から「21」を削除するには:
SELECT REGEXP_REPLACE('21fgggg21.lkkk', '^21') FROM DUAL;
REGEXP_REPLA
------------
fgggg21.lkkk
文字列の先頭から「2」を削除するには:
SELECT REGEXP_REPLACE('215699898.55fff', '^2') FROM DUAL;
REGEXP_REPLACE
--------------
15699898.55fff
説明として...
^21
「文字列の先頭にある 21 に一致」を意味します。REGEXP_REPLACE
一致した文字列を何に置き換えるかのオプションの 3 番目のパラメーターがあります。一致した文字列を削除したいだけなので、パラメーターを省略できます。これにより、何も置き換えられません。選択するだけの場合は、substrとinstrを組み合わせて使用できます。
substr(string, instr(string, 'number') + 1, len(string))
結果は基本的に、番号が配置された場所の後に始まる文字列になります。