0

我已经搜索但找不到适合我需要的答案。我有两组数据,需要将第一组(表 1 描述字段)与列表(表 2)进行比较,并返回每个接口/订单的 VIP 代码。

对于任何描述,唯一相同的标识符是以“003”结尾的 9 位订单 ID。我需要将此 9 位字符串与始终以订单 ID 开头但之后可能包含其他字符或数字的另一个表进行比较。我知道 LIKE 比较适用于第二个表,但我不知道如何从描述字段中删除订单号。

更新:表 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

为什么不将您需要的数据存储在每个表的专用列中?将其设为数字​​列并对其进行索引,然后您可以非常有效地JOIN使用该列。

SELECT * FROM Table_1 LEFT JOIN Table_2 USING(common_index)
于 2013-09-30T18:08:37.670 回答
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 回答