2017-12-13 12 views
0

のは、私がデータ以下としましょう:特定の文字の後にすべてをカットする方法ですが、文字列に含まれていない場合は何もしません。

fjflka, kdjf 
ssssllkjf fkdsjl 
skfjjsld, kjl 
jdkfjlj, ksd 
lkjlkj hjk 

私は「」後にすべてのものをカットしたいが、文字列は、この文字が含まれていない場合には、それは文句を言わない私はSUBSTRを使用する場合、何を行うと、すべてをカット'、'の後にこの文字を含まない文字列はnullとして表示されます。どのように私はこれを達成するのですか?私はOracle 11gを使用しています。

+0

"私たちのすべてを後にしてください" - 出力に 'fjflka'または' kdjf'が必要ですか? –

+0

"fjflka"前の最初の部分、 '、' – h0neybaLL

答えて

1

あなたのテーブルを想定すると:

SQL> desc mytable 
    s varchar2(100) 

を使用することがあります。

select decode(instr(s,','),0,s,substr(s,1,instr(s,',')-1)) from mytable; 

demo

1

これは動作するはずです。単にREGEXP_SUBSTR

with t_view as (
select 'fjflka, kdjf' as text from dual union 
select 'ssssllkjf fkdsjl' from dual union 
select 'skfjjsld, kjl' from dual union 
select 'jdkfjlj, ksd' from dual union 
select 'lkjlkj hjk' from dual 
) 

select text,regexp_substr(text,'[^,]+',1,1) from t_view; 
0

さて、以下のクエリは、あなたの要件ごとに作品を使用します。

with mytable as 
(select 'aaasfasf wqwe' s from dual 
union all 
select 'aaasfasf, wqwe' s from dual) 
select s,substr(s||',',1,instr(s||',',',')-1) from mytable; 
関連する問題