Postgresql, команда sql, объединить таблицу с похожей строкой, только строка "OM:" находится в начале - PullRequest
0 голосов
/ 13 июня 2019

Я хочу присоединиться к таблице.

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

Возможно ли присоединение к таблице c_store.store_code на основе удаления (или замены) из каждого поля в o_order.customer_note?

Я пытался

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

но безуспешно.Я думаю, это только для переименования столбца, верно?Извините за этот вопрос, я новичок в этом.

Спасибо.

1 Ответ

3 голосов
/ 13 июня 2019

Используйте конкатенацию строк в своем условии соединения:

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

Но не так, что, хотя приведенная выше логика может исправить ваш запрос в краткосрочной перспективе, в долгосрочной перспективе лучшим решением будет правильное соединениеНастройка столбцов в вашей базе данных.То есть желательно иметь возможность делать объединения только на равенстве.Это позволило бы Postgres использовать индекс, если он существует.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...