Есть ли левые соединения и санация ценностей одновременно? - PullRequest
0 голосов
/ 02 апреля 2020

Рассмотрим следующие две таблицы:

table1

id    key
---------
1     foo


table2

id    key1    key2
------------------
1     foo     444
2     (foo)   453
3     bar     355

Я хочу объединить информацию из обеих таблиц следующим образом:

select    t1.id, t1.key, t2.key2
from      [table1] t1
left join [table2] t2 on t1.[key] = t2.[key1]

Что приводит к

id    key    key2
-----------------
1     foo    444

Проблема в том, что иногда значения в key1 имеют квадратные скобки (), но я должен их игнорировать. Таким образом, на самом деле, (foo) на самом деле также foo, и поэтому желаемый результат:

id    key    key2
-----------------
1     foo    444
2     foo    453

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

Ответы [ 2 ]

2 голосов
/ 02 апреля 2020

Вы можете просто добавить условие соединения для обработки значений, которые окружены (). in приходит на ум:

select    t1.id, t1.key, t2.key2
from      [table1] t1
left join [table2] t2 on t2.[key1] in (t1.[key], '(' + t1.[key] + ')')
1 голос
/ 02 апреля 2020

Использование LTRIM, RTRIM

   select    t1.id, t1.key, t2.key2
   from      [table1] t1
   left join [table2] t2 on
  RTRIM( LTRIM(t1.[key], '(') , ')' ) = 
    RTRIM( LTRIM(t2.[key], '(') , ')' )
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...