0

これらの文字列について

   RSLR_AIRL19_ID3454_T20030913091226
   RSLR_AIRL19_ID3122454_T20030913091226
   RSLR_AIRL19_ID34_T20030913091226

ID の後に番号を取得する方法は?

または、2つの文字の間のコンテンツを取得する方法はありますが、それらは含まれませんか?

私はこれ'/\_ID([^_]+)/'を配列のように使用します ( [0] => _ID3454 [1] => 3454 )

これは正しい方法ですか?

4

2 に答える 2

0

の後に数値を抽出するにはID、同様のクエリを記述できます。

SQL> with t1 as(
  2    select 'RSLR_AIRL19_ID3454_T20030913091226' as col from dual union all
  3    select 'RSLR_AIRL19_ID3122454_T20030913091226'     from dual union all
  4    select 'RSLR_AIRL19_ID34_T20030913091226'          from dual
  5  )
  6  select regexp_substr(col, '^([[:alnum:]]+_){2}ID([[:digit:]]+)_([[:alnum:]]+){1}$', 1, 1, 'i', 2) as ID
  7    from t1
  8  ;

ID
-------------
3454
3122454
34

または、文字列全体が特定の形式に一致するかどうかを確認せずに、パターンの最初の出現から数字を抽出する場合:

SQL> with t1 as(
  2    select 'RSLR_AI_RL19_ID3454_T20030913091226' as col from dual union all
  3    select 'RSLR_AIRL19_ID3122454_T20030913091226'      from dual union all
  4    select 'RSLR_AIRL19_ID34_T20030913091226'           from dual
  5  )
  6  select regexp_substr(col, 'ID([[:digit:]]+)', 1, 1, 'i', 1) as ID
  7    from t1
  8  ;

ID
--------------
3454
3122454
34 
于 2012-11-24T08:52:22.573 に答える
0

pcreおよびエンジンの

ID\K\w+

ノート

\K試合を「再開」します。

http://www.phpfreaks.com/blog/pcre-regex-spotlight-k (php使用pcre)を参照してください。

于 2012-11-15T00:42:47.637 に答える