sql - 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
但没有成功。我认为,这仅用于重命名列名,对吗?对不起这个问题,我是新来的。
谢谢。
解决方案
在连接条件中使用字符串连接:
SELECT ...
FROM o_order o
LEFT JOIN c_store c
ON o.customer_note = 'OM:' || c.store_code::text;
但并不是说虽然上述逻辑可能会在短期内修复您的查询,但从长远来看,更好的修复方法是在您的数据库中设置正确的连接列。也就是说,希望能够仅在相等性上进行连接。这将使 Postgres 使用索引(如果存在)。
推荐阅读
- string - 将字符串拆分为字典 C#
- python - 将数值数据写入文本文件:matlab to python
- ssl - 在 IIS 上设置多个站点并添加 SSL - GCP 虚拟机
- android - AppCompat ActionBar 加载失败,出现未知错误
- firebase-realtime-database - Firebase/Firestore 中自动生成的文档 ID 是否会重复?
- jquery - 带有禁用选项的 Jqueryui 组合框
- css - 调整屏幕大小时如何使块向左移动?
- symfony - 无法自动连接服务“hwi_oauth.resource_ownermap.secured_area”
- python - Python 'str' object does not support item assignment
- c# - ASP.net MVC 服装模型