0

次の式があります: 15-JUL-16,20-JUL-16,20-JUL-16,30-JUL-16私のコラムの 1 つに。

式から (最初のコンマまでの式)SUBSTR(REGEXP_SUBSTR(base.systemdate, '.+,'), 1, 9)を取得することに成功しました。15-JUL-16

しかし、取得方法がわかりません30-JUL-16(最後のコンマの後の最後の式)。

それを取得するために使用REGEXP_SUBSTRする方法はありますか?そして、私たちはそれに取り組んでいるので。

コンマなしREGEXP_SUBSTRで取得するためだけに使用するきちんとした方法はありますか? 15-JUL-16カンマを取り除くために2番目のSUBSTRを使用しているため、データ形式と互換性があります。

4

2 に答える 2

0

これを試して

    select dates from
    (
        SELECT dates,max(id) over (partition by null) lastrec,min(id) over (partition by null) firstrec,id FROM (
            with mine as(select '15-JUL-16,20-JUL-16,20-JUL-16,30-JUL-16' hello from dual)
               select rownum id,regexp_substr(hello, '[^,]+', 1, level) dates from mine
               connect by regexp_substr(hello, '[^,]+', 1, level) is not null)
     )
     where id=firstrec or id=lastrec

このクエリは、カンマ区切りのリストから最初と最後のレコードを取得します。

于 2016-08-02T11:15:58.093 に答える
0

非常によく似た構造を使用できます。

SELECT REGEXP_SUBSTR(base.systemdate, '[^,]+$')

Oracle (および一般的な正規表現) は「貪欲」です。これは、最も長い文字列を取ることを意味します。リスト内のアイテムがすべて同じ長さであることがわかっている場合は、次を使用できます。

SELECT SUBSTR( ase.systemdate, -9)
于 2016-08-02T11:01:19.830 に答える