首页 > 解决方案 > Postgresql, sql 命令,用相似字符串连接表,只有字符串“OM:”在开头

问题描述

我想加入餐桌。

left join
c_store on o_order.customer_note = c_store.store_code

字段中的字符串几乎相同,只是在字段开头包含“OM:”,例如,来自 o_order.customer_note 的字段是

OM:4008

从 c_store.store_code 是

4008

是否可以基于从 o_order.customer_note 中的每个字段中删除(或替换)来加入表 c_store.store_code?

我试过

c_store on replace(o_order.customer_note, '', 'OM:') = c_store.store_code

但没有成功。我认为,这仅用于重命名列名,对吗?对不起这个问题,我是新来的。

谢谢。

标签: sqlpostgresqlreplace

解决方案


在连接条件中使用字符串连接:

SELECT ...
FROM o_order o
LEFT JOIN c_store c
    ON o.customer_note = 'OM:' || c.store_code::text;

但并不是说虽然上述逻辑可能会在短期内修复您的查询,但从长远来看,更好的修复方法是在您的数据库中设置正确的连接列。也就是说,希望能够仅在相等性上进行连接。这将使 Postgres 使用索引(如果存在)。


推荐阅读