MYSQL文字列の一部と一致する

私は一致する必要がある2つのテーブルがあります。例を見てください。

TB1

ID | String1 
1  | Apt 2
2  | Apt 23
3  | Apt 22

TB2

ID2| String2
1  | 23 Apartment
2  | 22 The Block
3  | 2 Complex

私はTB1からTB2までのどのIDの一致を見つける必要がありますか?文字列1から文字列2までの数字部分

出力

 ID | Matching ID2 | String1 | String 2
 1  | 3            | Apt 2   | 2 Complex
 2  | 1            | Apt 23  | 23 Apartment
 3  | 2            | Apt 22  | 22 Apartment
0
私には明らかです。彼はString1の番号と一致したいと思う。
追加された 著者 m0skit0,
明確ではありません - どの値に基づいて一致させようとしているのか説明できますか?
追加された 著者 Sachin Shanbhag,
申し訳ありませんが、正しいです私はマッチする文字列1の数の部分をstring2にしたい
追加された 著者 Matt Dykstra,

2 答え

IMHOこれは悪いテーブルデザインです。このようなマッチを行う必要がある場合は、別のフィールドに番号を格納します。

0
追加された
ALTER TABLEを実行する可能性はありますか?
追加された 著者 m0skit0,
あなたの最後のコメントは分かりません。また、これはTB1とTB2の間の外来キーの関係について叫んでいます...
追加された 著者 m0skit0,
テーブルはどのような形式で来ましたか? CSV?
追加された 著者 Ed Heal,
私はしかし、これはどのようにテーブルが私に来て、私はいくつかの試合を実行する必要があります
追加された 著者 Matt Dykstra,
私はCSVにそれを取得することができますし、テーブルを変更することができますが、データは非常に異なるですが、私はその変更を行う方法を知らない。
追加された 著者 Matt Dykstra,
たとえば、String1にはApt 1、Apartment 1、1/The Blockが含まれます。よくあることは、数字が入っていることです
追加された 著者 Matt Dykstra,

本当に本当にテーブル形式を変更できない場合は、指定された文字列のすべての非数値文字を取り除いてクエリで使用する関数を作成します。

幸いにも、これは以前に取り組んできたタスクです(あなたのイタリア人が傷ついてくれることを願って)

その後、クエリで関数を使用することができます。

したがって:

select a.ID, b.ID as "Matching ID2",a.String1,b.String2    
from TB1 as a INNER JOIN TB2 as b    
ON LeaveNumber(a.String1) = LeaveNumber(b.String2)
ORDER BY a.ID asc;

馬鹿な証拠ではなく、おそらく最速ではありませんが、あなたが望むものを手に入れなければなりません。

私が真剣にあなたがチャンスを持っている場合は、このテーブルのデザインを変更することを検討しますが。あたかもCSVエンジンテーブルであるか、CSVから直接入力されているかのように聞こえますが、その場合はおそらくあまりにも多くの制御権を持っていないでしょう!

0
追加された