首页 > 解决方案 > SQL左连接忽略第一个字母

问题描述

我正在尝试使用表 a 中的“订单 ID”和表 b 中的“订单参考”加入 2 个表。

问题是订单完全是数字“12345”,订单参考在相同数字“a12345”之前会有一个字母</p>

想知道是否有办法进行连接但忽略表 b 中的字母?

欢迎任何想法

谢谢

标签: sqldatabasenetezza

解决方案


当然。你在 JOIN 中看到的东西是真实的陈述;他们根本不需要与表数据有任何关系

A JOIN B ON EXTRACT(HOUR FROM NOW()) = 12

这会将 A 中的所有行与 B 中的所有行连接起来,但仅在每天一小时内(您必须在 12:00 到 12:59:59 之间运行它) - 这与表数据无关

想象一下,连接工作就像“A 中的每一行都与 B 中的每一行连接,然后对结果中的每一行评估真值语句。如果真为假,则丢弃该行。因此 anON 1=1是有效的并包括所有行,因为永远都是真的。。


因此,将 A 中的所有行加入到 B 中,其中 B 是开头带有“a”的行,如下所示:

A JOIN B ON A.ID = SUBSTR(B.ID, 2, LENGTH(B.ID) - 1))

不过要小心;操纵表数据可以杀死索引的使用

还要考虑你可以做B.ID LIKE CONCAT('_', A.ID)


推荐阅读