2017-06-28 19 views
0

特定の文字列を含むテーブルからすべての行を選択しますが、その後は通常は動的である次の4文字を返します。Oracleテーブルから特定の文字列とそれに続く文字を選択してください。

だから、基本的に、私は今、この

Column1 | Column2 

CSE-001 | jdaosfjodas 

CSE-002 | fjdaosfjdosj 

GDS-001 | dskfjaodij 

CSE-103 | fojdsiofj 

のように見えるテーブルを持って、私はCSEで始まるすべての行だけでなく、選択したい - 、続くとsubsiquent 3つの数字を「」その3つの数字は何でもかまいません。上記の表に基づいて、CSE-001、CSE-002、およびCSE-103を返したいと思います。

申し訳ありませんこの質問が恐ろしく行われた場合は、私はこのサイトでは比較的新しいです。 ありがとう!

EDIT

@GordonLinoffは、私が欲しいほぼ正確に何を言ったが、何のインスタンスについて、列1は、私がその特定の行を返すようにしたいでしょう。この場合

Column1 | Column 2 
GDE-002, CSE-101, GDE-003 | faosfd 

のようなものを返しますが、唯一の " CSE-101 "の一部です。

+1

「Row1」と「Row 2」と表示されている列はなぜですか?それは少し戸惑うものです。 –

+0

タイトルからPLSQLを削除しましたが、問題はPL/SQLとは関係ありません。 – mathguy

+0

Column1が 'CSE-2002'の場合はどうなりますか?あなたの要求は、厳密に解釈され、 'CSE-200'を返すことです。それとも、私たちのデータでは不可能なのですか?ダッシュは常に3桁です。それは*正確に* 3桁ですか、それとも少ないのでしょうか?もしそうなら、望ましい結果は何ですか? – mathguy

答えて

1

をこれはregexp_likeを使用して行うことができます。あなたは大文字と小文字を区別した一致が必要な場合は

大文字と小文字を区別しないマッチ用の

select * from tbl 
where regexp_like(column1,'^CSE-[0-9]{3}$','i') 
--this query matches values like csE-101,CsE-001,cse-290 etc. 

select * from tbl 
where regexp_like(column1,'^CSE-[0-9]{3}$') 

編集を使用します。OPの編集に基づいて、上記の回答を投稿した後、

select * from tbl 
where regexp_like(column1,'(^|\s|,)CSE-[0-9]{3}(,|\s|$)') 
+0

ありがとうございました! –

0

それはあなたがこのような何かしたいように聞こえる:

select substr(col1, 1, 7), t.* 
from t 
where t.col1 like 'CSE-___%'; 
+0

これまでのご協力ありがとうございます!私はうまくいけば少し明確にするために私の記事を編集しました。 –

関連する問題