Как присоединиться, используя двойной LTRIM - PullRequest
0 голосов
/ 23 мая 2019

Я пытаюсь объединить две таблицы через определенный код, однако в основной таблице Я должен обрезать некоторые числовые символы ('858', '859'), чтобы правильно присоединиться ко второй таблице. (ca1) Мне нужно специально TRIM только эти два числовых символа

enter image description here "таблицы"

Я пробовал несколько вещей. В том числе:

JOIN T2 ON (LTRIM(t1.code, '859') AND LTRIM(t1.code, '859') = t2.code 

в результате ошибка:

недопустимый реляционный оператор

Я ожидал успешного соединения с этой комбинацией LTRIM, но безуспешно;

1 Ответ

2 голосов
/ 23 мая 2019

TRIM() не делает то, что вы хотите.

ON (t2.code = t1.code AND SUBSTR(t1.code, 1, 3) NOT IN ('858', '859')) OR
   (t2.code = SUBSTR(t1.code, 4) AND SUBSTR(t1.code, 1, 3) IN ('858', '859'))

Или вы можете выразить это как:

ON t1.code IN (t2.code, '858' || t1.code, '859' || t2.code)

Эта более простая формулировка не точно то же самое. Если бы у t2.code были оба '8581' and '1', тогда оба соответствовали бы '8581' в t1.code. Я предполагаю, что эта ситуация не встречается в ваших данных.

Я должен предупредить вас, что использование OR или вызовы функций в условиях JOIN действительно могут снизить производительность.

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