Как использовать Concat () & Substring в одном запросе? - PullRequest
0 голосов
/ 05 апреля 2019

В целях вопросов я буду использовать минимальные данные для своих примеров.

У меня есть таблица с именем table1 и столбец с именем test, который выглядит следующим образом:

test
5012 

Я могу добавить дополнительный ноль после перед результатом столбца test, используя этот запрос:

SELECT CONCAT('0',test) as x from table1

это результат запроса:

таблица результатов: table1

  x
05012

Теперь у меня есть еще одна таблица с именем table2, похожая на эту:

test    test2
05012     1

У меня вопрос: как мне объединить две таблицы на основе этого запроса выше и объединить table1 со столбцом test2 из table2? Убедиться, что первые 4 символа обоих столбцов test из обеих таблиц совпадают?

Вот как должна выглядеть таблица 1:

 Afterquery
  050121

Ответы [ 3 ]

1 голос
/ 05 апреля 2019

Мне любопытно, почему бы вам просто не использовать table2?

select concat(t2.test, t2.test2) as afterquery
from table2 t2;

table1, кажется, не играет роли.

Если вы хотите значения в table2 отфильтровано по table1, вы можете использовать exists:

select concat(t2.test, t2.test2) as afterquery
from table2 t2
where exists (select 1
              from table1 t1
              where t2.test = concat('0', t1.test)
            );

Вы можете выразить это как join:

select concat(t2.test, t2.test2) as afterquery
from table2 t2 join
     table1 t1
     on t2.test = concat('0', t1.test);

Thisполезно, если вы хотите столбцы из обеих таблиц - но это не обязательно, чтобы ответить на вопрос.С другой стороны, это может привести к дублированию при наличии нескольких совпадений.

1 голос
/ 05 апреля 2019

Я думаю, что это должно быть решением.Вам нужно использовать concat в соединении между table1 и table2

SELECT CONCAT('0', table1.test, table2.test2) AS Afterquery
FROM table1
INNER JOIN table2
ON CONCAT('0',table1.test) = table2.test
0 голосов
/ 05 апреля 2019

Немного другой подход с подзапросом:

select concat(concat_test, test2) test_results 
  from 
    (select concat('0', test) concat_test from table1) table_alias 
  join 
    table2 on substring(concat_test,1,4) = substring(test,1,4);
...