SQL: редактировать данные перед объединением - PullRequest
1 голос
/ 23 октября 2019

ORACLE: Я пытаюсь ВНЕШНЕЕ СОЕДИНИТЬСЯ к таблице в столбце PART. Столбец первой части отформатирован следующим образом: «XXXXXXXX». Столбец номер два отформатирован следующим образом: «ABCXXXXXXXX». Я хочу исключить "ABC" перед "XXXXXXXX". Есть ли формула для этого?

Заранее спасибо.

Ответы [ 3 ]

0 голосов
/ 23 октября 2019

Попробуйте использовать LIKE, оператор, используемый для поиска указанного шаблона в столбце.

Попробуйте что-то вроде этого:

column2 LIKE '%' + column1

для mysql вам нужно использовать concat('%', column1)

Находит все значения, заканчивающиеся на значение column1

0 голосов
/ 23 октября 2019

Я бы порекомендовал:

SELECT t1.*, t2.*
FROM table1 t1 LEFT JOIN
     table2 t2
     ON t2.PART = 'ABC' || t1.PART ;

Это позволяет Oracle использовать индекс для t2.PART. Для INNER JOIN это не имеет значения. Но в LEFT JOIN, table1 будет сканироваться в любом случае. Это может позволить Oracle использовать индекс для table2(PART).

или в более общем смысле:

SELECT t1.*, t2.*
FROM table1 t1 LEFT JOIN
     table2 t2
     ON t2.PART LIKE '___' || t1.PART ;
0 голосов
/ 23 октября 2019

Вы можете присоединиться, используя подстроку во втором столбце, начиная с четвертого символа, например,

SELECT t1.*, t2.*
FROM table1 t1
LEFT JOIN table2 t2
     ON t1.PART = SUBSTR(t2.PART, 4);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...