Как JOIN две таблицы SQL если один из столбцов текстовый и содержит лишние данные?

Есть две таблицы, которые необходимо JOIN. Проблема в том, что в первой таблице нужный столбец "id" в int64, а во второй таблице в виде текста с префиксом ("abc123", "abc456" - где цифры это id). Конвертировать "id" первой таблицы в текст и дописать к нему префикс, или обрезать префикс столбца второй таблицы и конвертировать в число - не получается.

Ошибка - JOIN: each equality predicate argument must depend on exactly one JOIN input

Ответы (1 шт):

Автор решения: Merlin

Попробуйте вынести преобразование в подзапрос(где вы сначала сформируете нужное поле), а не делать его прямо в соединении, например:

SELECT *
  FROM table2 t2
  JOIN (SELECT CONCAT('%', CAST(table1.int64 AS CHAR)) AS field1
        FROM table1 t1)f1
    ON t2.table2.text LIKE f1.field1
→ Ссылка