Использование substr и instr с join, когда в одном столбце больше значений - PullRequest
0 голосов
/ 06 октября 2018

У меня есть следующие 2 таблицы:

Table 1
Table 2

Я пытаюсь выбрать столбцы пообъединение таблиц 1 и 2 на основе столбца C с использованием следующего запроса:

Select t1.column A,
t2.Column A,
t2. Column B
from table1 t1, table2 t2
where substr(t2.column C,instr(t2.column c,'=',1,1)+1,3) = substr(t1.column C,1,3)
AND substr(t2.column C,instr(t2.column c,':',1,1)+9,10) = substr(t1.column C,instr(t1.column C,';',1,1)+1,11)
AND substr(t2.column C,instr(t2.column c,':',1,2)+9,10) = substr(t1.column C,instr(t1.column C,';',1,2)+1,11)

Но, к сожалению, он не возвращает никаких результатов.Я предполагаю, что это может произойти, потому что столбец C в таблице 2 имеет больше значений.

Если это так, как бы я мог получить результаты, которые я ищу, пожалуйста?

1 Ответ

0 голосов
/ 07 октября 2018

Если вы используете regexp_replace, вы можете преобразовать «столбец C» из второй таблицы в формат, используемый в первой таблице.

После форматирования в том же формате их можно сравнивать.
Тогда потребуется только 1 критерий объединения.

select 
t1."column A" as colA1, 
t1."column B" as colB1, 
t2."column A" as colA2, 
t2."column B" as colB2
from table1 t1
join table2 t2 on (regexp_replace(t2."column C", '^\D+(\d+)\D+(\d+)\D+(\d+).*','\1;\2;\3') = t1."column C")

Тест по SQL Fiddle здесь

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