0

検索しましたが、特に自分のニーズに合った答えが見つかりません。2 セットのデータがあり、最初の部分 (表 1 の [説明] フィールド) とリスト (表 2) を比較し、各インターフェイス/注文の VIP コードを返す必要があります。

どの説明でも同じ識別子は、「003」で終わる 9 桁の注文 ID だけです。この 9 桁の文字列を、常に注文 ID で始まる他のテーブルと比較する必要がありますが、その後に他の文字や数字が含まれる可能性があります。2 番目のテーブルで LIKE 比較が機能することはわかっていますが、説明フィールドから注文番号を削除する方法がわかりません。

更新: 表 1 は、ルーター インターフェイス コマンドの出力を比較する一時的な表です。表 2 は、表 1 と比較したくない数万のエントリを含む私の静的アカウント データベースです。これが、表 2 だけを取り上げて注文番号を表 1 と比較しない理由です。具体的には、表 1 の説明フィールドから 9 桁の注文 ID を抽出する方法について助けを求めています。

表1

Interface    Description
Ge 1/0/1     blah_bla_123456003_blahlahlah
Ge 1/0/2     blah_blah_bla_234567003_blahahblh
Ge 1/0/3     b_bla_345678003_blhahblah
Ge 1/0/4     bh_blh_ba_456789003_lahlahbl

表 2

Order ID       VIP Code
123456003.0    Premier
234567003      Wholesale
345678003.6    Normal
456789003.23   Premier

予想された結果

Order*        VIP Code
123456003     Premier
234567003     Wholesale
345678003     Normal
456789003     Premier

*(stripped from Description)
4

3 に答える 3

1

表 2 から ID の最初の 9 桁を取得する場合は、 を使用できますleft(table2.id,9)。そのフィールドから最初 (左) の 9 文字を返します。

次に、LIKE (「%」ワイルドカードを使用) または正規表現を使用してそれを使用できます。

于 2013-09-30T18:01:36.377 に答える
0

あなたはこのようなことができます:

select TRUNCATE(tbl2.orderId,0) orderNum, tbl2.vipcode, tbl1.interface
from table2 tbl2 , table1 tbl1
WHERE tbl1.description like CONCAT('%',TRUNCATE(tbl2.orderId,0),'%');

ここでフィドルを作りました

于 2013-09-30T18:26:42.243 に答える