2016-06-02 3 views
1

2つのテーブルAとBを持っています。それらのテーブルのそれぞれには、文字列型の "name"という列があります。 A.nameがBnameのサブストリングであるところで、結合操作からすべてのレコードを取得したい。文字列値のテーブルを結合する

select * from A inner join B on A.name like concat('%',B.name,'%'); 

結果は空のテーブルです。

select * from A cross join B where A.name like 'test' and B.name like '%test%'; 

静的な値 "test"のレコードがいくつかありますが、私はそのクエリで何か問題があります。

答えて

3

最初のクエリはあなたが必要とするAの部分文字列としてBをマッチングさ:

select * from A inner join B on B.name like concat('%',A.name,'%'); 

または

select * from A inner join B on position(A.name in B.name) > 0; 
+0

'on(Aname in B.name)'は無効です。結合条件にはブール式が必要です。例えば'on name(B.nameのA.name)> 0' –

+0

@a_horse_with_no_name、訂正ありがとう。この行動については知らなかった。 – Fabricator

0

あなたはA.nameB.nameの部分文字列であることと一致する場合は、その式があるB.name LIKE '%A.name%' 。これを試してみてください:

select * 
from A inner join B 
on B.name like '%A.name%' 
関連する問題