2012-05-03 4 views
1

私は、特定の文字やワイルドカードの代わりに列全体を使用して、2つのテーブルで部分一致のSELECTを実行しようとしています。列全体でLIKEを使用してSELECTする方法はありますが、完全一致は必要ありませんか?

私は2つのテーブル(T1、T2)と2つのカラム(T1.C1、T2.C2)を持っています。 C1とC2が正確にフォーマットされた一致である場合、私はSELECTでリターンを得ることができますが、C2はC1からのテキスト文字列を含むテキストを一緒につなぎました。

ので、ここでは例として2つの表にフォーマットされた文字の例をいくつか紹介します。

T1.C1

  • ドウ、ジョン
  • スミス、スティーブ
  • ロバーツ、サリー

t2.c2

  • #Doe、ジョン、Thekid、ビリー、ランダムグループA
  • ランダムグループB、スミス、スティーブ#ジョーンズ、アリー
  • #Roberts、サリー!ランダムGroupCなど

何I 'Doe、John、Thekid、Billy、Random Group A 'のようにフォーマットされていても、T1.C1のDoe、JohnがT2.C2に見つかったときに一致するようになりたいと思っています。

ここで私は正確な一致を得るために何を使用しています...

SELECT * 
FROM T1, T2 
WHERE T1.C1 LIKE CONCAT('%', T2.C2 , '%'); 
+0

が言うから文字列に一致しますが、名前を選択しますが、 '#'のような側面にジャンクを無視しようとしていますか?なぜLIKEを使用しないのですか$ search_value% –

答えて

1

SELECT * 
FROM T1, T2 
WHERE T2.C2 LIKE CONCAT('%', T1.C1 , '%'); 

については何? 、すなわちT1.C1に文字列を含むT2.C2。

1

SELECT t1.c1、t2.c2 FROM t1 JOIN t2 WHERE t2.c2 LIKE CONCAT( '%'、t1.c1、 '%');

これは、両方のテーブル

http://sqlfiddle.com/#!2/20df8/21

+0

ありがとう、これはそれでした!私はこれを以前に働かせていたときにテーブルを逆にしてしまったと思うし、シーケンスが重要だ。素晴らしいフォーラム、優れたリソース:>) – mototrionic

+0

あなたは大歓迎です。私はこのサイトが私の隠れを何回保存したかをあなたに伝えることはできません – Scarecrow

関連する問題