2

私は以下のようなテーブルを持っています:

Last_name First_name
aaaa       bbb -
aaa        bbbb -
aaa        gggg j

substr 関数を使用して - を削除し、 - でfirst_nameない場合は文字を保持するにはどうすればよいですか?

ありがとう

4

2 に答える 2

3

文字列の右側から削除する文字を 2 番目のパラメーターとして指定して、rtrim()関数を使用できます。

SQL> with t1(Last_name, First_name) as(
  2    select 'aaaa',  'bbb -' from dual union all
  3    select 'aaa',   'bbbb -' from dual union all
  4    select 'aaa',   'gggg j' from dual
  5  )
  6  select last_name
  7       , rtrim(first_name, ' -') as first_name
  8    from t1
  9  ;

結果:

LAST_NAME FIRST_NAME
--------- ----------
aaaa      bbb
aaa       bbbb
aaa       gggg j

Oracle 10g バージョンからは、regexp_replace()正規表現関数も使用できます。

select last_name
     , regexp_replace(first_name, '\s*-\s*$') as first_name
  from t1

結果:

LAST_NAME FIRST_NAME
--------- ----------
aaaa      bbb
aaa       bbbb
aaa       gggg j
于 2013-08-28T17:00:23.367 に答える