Одним из способов является использование рекурсивного обрезания CTE левого крайнего символа для крайнего левого символа.Получить отдельный набор тех символов, для которых символ не существует в наборе отдельных символов.
WITH
cte (c, r)
AS
(
SELECT substr(t2.col_2, 1, 1) c,
substr(t2.col_2, 2, length(t2.col_2) - 1) r
FROM tab_2 t2
UNION ALL
SELECT substr(c.r, 1, 1) c,
substr(c.r, 2, length(c.r) - 1) r
FROM cte c
WHERE substr(c.r, 1, 1) IS NOT NULL
)
SELECT DISTINCT
c.c
FROM cte c
WHERE NOT EXISTS (SELECT *
FROM tab_1 t1
WHERE t1.col_2 = c.c);
db <> fiddle
Может быть, вы можетеобъединить идею Гордона, удалившего существующие символы с помощью translate()
, сначала с идеей убрать крайние левые символы по одному, чтобы даже получить ярлык без необходимости NOT EXISTS
.