Объединить столбцы с конкретным регистром соответствия - PullRequest
0 голосов
/ 08 июля 2019

У меня есть две таблицы TableA и TableBTableA есть столбец с именем Code Как

'A'
'AB'
'B'
'BB'

В TableB У меня есть столбец с именем pnrcode как

'A001'
'AB001'
'B001'
'BC001' 

Обе таблицы не имеют отношения.Я хочу объединить эти две таблицы на основе TableA кода с TableB pnrcode с соответствием символов на основе TableA

Ответы [ 4 ]

0 голосов
/ 09 июля 2019

с разрешением как (ВЫБЕРИТЕ dbo.AlphaOnly (a.Prccode) как Prccode1, * из таблицы A) SELECT * из res присоединить Tableb b на b.Code = res.prccode1 идти

0 голосов
/ 08 июля 2019

Попробуйте этот код ниже с объединением.Вы можете использовать любое соединение в зависимости от ваших требований.

SELECT * 
FROM TableA
INNER JOIN TableB 
ON TableA.Code = 
left( TableB.pnrcode, length(TableB.pnrcode) - length( reverse( concat(TableB.pnrcode, "1") ) + 0 ) + 1 );
0 голосов
/ 08 июля 2019

Вы можете использовать replace() для удаления code из pnrcode.
Если осталось number > 0 (MySql выполняет неявное преобразование), присоединитесь к этому:

select *
from tablea a left join tableb b
on replace(b.pnrcode, a.code, '') > 0

Я предполагаю, что все pnrcode имеют числовую часть, отличную от 0.
См. демо .
Результаты:

| code | pnrcode |
| ---- | ------- |
| A    | A001    |
| AB   | AB001   |
| B    | B001    |
| BB   |         |
0 голосов
/ 08 июля 2019

Если вы используете MySql 8. * вы можете использовать REGEXP_SUBSTR в подзапросе для объединения двух таблиц

SELECT a.*, b.prncode 
FROM TableA a
JOIN (SELECT *, REGEXP_SUBSTR(prncode, '^[A-Z]+') as code 
      FROM TableB) b ON a.code = b.code
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...