Это дает ожидаемый результат:
select table1.*, table2.Para_2
from table1 left outer join table2
on table2.column_A like '%'||table1.column_A||'%'
and table2.column_B like '%'||table1.column_B||'%'
and table2.column_C like '%'||table1.column_C||'%'
and coalesce(table1.column_a, table1.column_b, table1.column_c) is not null;
Как видите, это почти то, что вы имели. Но ваш where
не нужен, просто дополнительная последняя строка в условии on
. Эта дополнительная строка также может быть написана, возможно, более четко, например, если вам не нравится функция coalesce
:
and not (table1.column_a is null and table1.column_b is null and table1.column_c is null);
Или:
and length(table1.column_a||table1.column_b||table1.column_c)>0;