我搜索过但找不到符合我需要的答案。我有两组数据,需要将第一部分(表1描述字段)与列表(表二)进行比较,并返回每个接口/订单的VIP代码。
任何描述的唯一标识符是以'003'结尾的9位订单ID。我需要将这个9位数字符串与另一个表格进行比较,该表格总是以订单ID开头,但之后可能包含其他字符或数字。我知道LIKE比较适用于第二个表,但我无法弄清楚如何从描述字段中删除订单号。
更新:表1是比较路由器接口命令输出的临时表。表2是我的静态帐户数据库,其中包含数万个我不想与表一比较的条目。这就是为什么我不只是拿表2并将订单号与表一进行比较。我特别请求帮助,以便从表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)
答案 0 :(得分:1)
如果您想从表2中获取ID的前9位数,可以使用left(table2.id,9)
。它将返回该字段中的9个第一个(左)字符。
然后你可以使用LIKE(使用“ % ”通配符)或使用正则表达式。
答案 1 :(得分:0)
为什么不将所需数据存储在每个表的专用列中?将它设为数字列并将其编入索引,然后您可以使用该列执行非常高效的JOIN
。
SELECT * FROM Table_1 LEFT JOIN Table_2 USING(common_index)
答案 2 :(得分: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),'%');
我做了一个小提琴here