TRIM()
не делает то, что вы хотите.
ON (t2.code = t1.code AND SUBSTR(t1.code, 1, 3) NOT IN ('858', '859')) OR
(t2.code = SUBSTR(t1.code, 4) AND SUBSTR(t1.code, 1, 3) IN ('858', '859'))
Или вы можете выразить это как:
ON t1.code IN (t2.code, '858' || t1.code, '859' || t2.code)
Эта более простая формулировка не точно то же самое. Если бы у t2.code
были оба '8581' and '1'
, тогда оба соответствовали бы '8581'
в t1.code
. Я предполагаю, что эта ситуация не встречается в ваших данных.
Я должен предупредить вас, что использование OR
или вызовы функций в условиях JOIN
действительно могут снизить производительность.