2017-11-01 9 views
0

私の下の2つのテーブルで、特定の条件で内部結合クエリを実行する場所を探してください。Sqlクエリ文字列内の特定のデータを持つ内部結合

テーブル名: - TABLE1

enter image description here

テーブル名: - 表2 table2の列のSr

enter image description here

後に似ているいくつかの数のがありますテーブル1欄Sr番号です。その特定の番号に応じて参加します。

私は、どの状況で説明された状況で内部の関節をすることができますか教えてください。

+0

'substring_index()'を使用して、#の右側の値を分けて、それを結合条件として使用します。インデックスを使用することができないため、高速になるとは思わないでください。 [DOCS](https://dev.mysql.com/doc/refman/5.7/en/string-functions.html#function_substring-index) – xQbert

+1

これらの数字を他の列に抽出する方が良いでしょうか? –

答えて

0

Working Demo from RexTester.com

仮定:table2.Nameは常にDOCS FROMテーブル1

SELECT T1.Name, T2.value 
FROM table2 T2 
INNER JOIN table1 T1 
on T1.SR = substring_index(T2.Name,'#',-1); 

にマッチング数字が続く正確に1 # hastag /ポンド記号/番号記号でフォーマットされている:

SUBSTRING_INDEX(str,delim,count) 

文字列strから区切り文字delimのカウントオカレンスの前に部分文字列を返します。 countが正の場合は、最後の区切り文字の左側にあるすべてのものが返されます。 countが負の場合は、最後の区切り文字の右側にあるものすべてが返されます。 SUBSTRING_INDEX()は、delimを検索するときに大文字と小文字を区別した一致を実行します。

SELECT SUBSTRING_INDEX('www.mysql.com', '.', 2); 
'www.mysql' 
SELECT SUBSTRING_INDEX('www.mysql.com', '.', -2); 
'mysql.com' 

免責事項:結合で文字列操作を使用している場合、インデックスは使用できません。

関連する問題