2017-10-23 14 views
0

like演算子の中でクエリを使用できますか?like like operator

以下のクエリを使用しましたが、エラーが返されます。

select * 
from customers 
where cust_name like '%'||select name from members||'%' 
+0

あなたがメンバーから名前をフィルタリングするかを持っていますか?その場合、サブクエリを使用する – yesemsanthoshkumar

答えて

1

以下は動作するはずのような何か:PLSQL

SELECT 
* 
FROM 
customers c 
WHERE 1=1 
AND EXISTS 
(SELECT 1 
    FROM members m 
    WHERE 1=1 
    AND c.cust_name LIKE '%'||m.name||'%' 
) 
+1

'WHERE 1 = 1'は役に立たない。 –

+0

@a_horse_with_no_nameそれは習慣だ - 私はいつも、最初のどこに行をコメントアウトする必要があるかの条件を入れておく。 'WHERE' –

1

クエリーを実行したい場合、あなたは、クエリの結果を保持する変数をdecalreする必要があります。 (1行のみで動作します)あなたは副選択にメンバーの名前の一部を定義する必要があり

DECLARE 
    var customers%ROWTYPE; 
BEGIN 
    SELECT c.* 
    INTO var 
    FROM customers c 
      INNER JOIN members m ON c.cust_name LIKE '%' || m.name || '%'; 
END; 
1

:だから、としてそれを行うことができます

select * 
from customers 
where cust_name like (select '%'||name||'%' from members); 

同じことが複数の行で動作します(JOINので行うことができます):

select C.* 
from customers C 
INNER JOIN MEMBERS M ON (C.CUST_NAME LIKE '%'||M.NAME||'%'); 
+0

私はサブクエリから返すために2つ以上の行があるので、2番目のものを使用しました。ありがとう。 – Nidheesh

0

などのように括弧でサブクエリを囲むのに十分です'%'のようなcust_name || (メンバーから名前を選択) ||「%」

が、これだけ機能するときのテーブル「のメンバーは、」1つのレコードのみ