web-dev-qa-db-ja.com

文字Oracleの後に文字列を取得する方法

VP3 - Art & Design and HS5 - Health & Social Careがあります。Oracleで'-'の後に文字列を取得する必要があります。これは部分文字列を使用して達成できますか?

6
Aruna Raghunam

これほど簡単な文字列操作では、ベースINSTR()およびSUBSTR()関数を使用するだけです。以下のクエリでは、2つの位置afterハイフンから始まる列の部分文字列を取得します。

_SELECT
    SUBSTR(col, INSTR(col, '-') + 2) AS subject
FROM yourTable
_

ここでREGEXP_SUBSTR()を使用することもできますが(Gordonの答えを参照)、少し複雑になり、パフォーマンスは上記のクエリほど良くないかもしれません。

9
Tim Biegeleisen

regexp_substr()を使用できます:

_select regexp_substr(col, '[^-]+', 1, 2)
_

オプションのスペースを削除する場合は、trim()を使用できます。

_select trim(leading ' ', regexp_substr(col, '[^-]+', 1, 2))
_

非自明なパラメータは

  • _1_-ソースの最初の文字から検索します。 _1_がデフォルトですが、2番目のパラメーターを提供できるように設定する必要があります。
  • _2_-結果のサブストリングとして2番目の一致を取得します。デフォルトは1です。
7
Gordon Linoff