2016-08-29 20 views
0

私はCUST_TBLを持っていますが、列の1つにEMAILとUSER_IDがあります。電子メール列から特定の電子メールドメインを選択する方法

CUST_TBLには多くのレコードがありますが、特定の電子メールドメイン(@ gmail.comなど)とUSER_ID = 'SYSADMIN1'のユーザーのみが表示されます。

私は

select substr(email,INSTR(email,'@gmail.com')) 
from corp_usr 
where user_id = 'SYSADMIN1'; 

このクエリを試してみました。しかし、それは唯一の(私はすべての列だけ、これらのフィルター付きを希望)email列を示し、まだありません@ gmail.com

何のメールを示していこれは正しい質問ですか?

+0

だから、あなたは電子メールが '@のgmail.com'が含まれていることを条件とすべての列をしたいが、あなたはまた、電子メールが含まれていないレコードを表示したいです'@ gmail.com'。私はあなたの論理に従わない。 –

+0

電子メール列に '@ gmail.com'だけを含むすべての列からデータを選択したいとします。 '@ yahoo.com'のようなgmailドメインを使用していないレコードもたくさんあるので、Kamil G. – bnrfly

+0

@sagiはすでにあなたに解決策を与えています。 –

答えて

2

だけWHERE句でINSTR()を使用します。

select * from corp_usr 
where user_id = 'SYSADMIN1' 
    AND INSTR(email,'@gmail.com') > 0; 
+0

ありがとう、それは動作します! Btwそのクエリで '> 0 'とは何ですか? – bnrfly

+0

質問は正しいです、説明はそうではありません... 'INSTR()'は入力文字列(この場合は 'email')の**位置**を返します。ここで、検索文字列(' @ gmail.com' inこの場合)が見つかった場合、または検索文字列が入力文字列のどこにも見つからない場合は0を返します。複数のオカレンスに関心がある場合は、パラメータとして渡すことができますが、戻り値の意味ではありません。 https://docs.oracle.com/cd/B19306_01/server.102/b14200/functions068.htm – mathguy

+0

@mathguy Oopsy、悲しいことは私が知っていたことです:Pはコメントを削除しました。 – sagi

関連する問題