Была добавлена новая таблица, где я работаю, чтобы обрабатывать платежи через новую систему. Проблема в том, что она содержит только некоторую информацию, поэтому мне нужно сопоставить ее с другой таблицей, чтобы получить полную информацию.
По сути, столбец, который может сопоставлять транзакции вместе, имеет тип varchar2 (20) в старой таблице, но это varchar2 (80) в новой таблице.
Новая таблица (назовем ее Z) может содержать что угодно - от 11-значной ссылки до 30-40-символьной (могут быть цифры / буквы / некоторые специальные символы). То, чего я пытаюсь добиться, это сопоставить его со старой таблицей (назовем ее X), которая содержит только 11-значные ссылочные номера.
Итак, допустим, таблица Z выглядит следующим образом:
TransactionType Reference
Purchase abcd-efgh-1923-aa22
Refund 12345678910
А таблица X выглядит так:
Purchase Reference
Shoes 12345678910
Jacket 10987654321
Реально, я хотел бы найти для возврата и данной ссылки, что это была за покупка.
Я довольно новичок в SQL, и я пытался понять, что может делать приведение / преобразование, но я немного растерялся, потому что я пробовал и приведение, и преобразование.
Я пытался:
select purchase from x, z
where x.reference=z.reference;
select purchase from x,z
where to_number(x.reference)=to_number(z.reference);
select purchase from x,z
where x.reference=cast(z.reference as varchar2(20)); --- and viceversa, casting x to varchar2(80)
Нет выходных данных, хотя, когда я проверяю, скажем, возмещение в день, а затем покупки в тот же день, будут некоторые ссылки, которые соответствуют. Допустим, в течение дня я ожидал, что будет возвращено 5 строк, но строк не будет возвращено.