Můžete zabalit řetězec, proti kterému se shodujete, i řetězec obsahující userid
chcete najít shodu v ,
oddělovač, abyste zajistili shodu s úplným userid
(spíše než naivně používat LIKE
bez zohlednění okolních oddělovačů a shody pouze s částečným userid
). Takhle:
SELECT *
FROM "USER" u
WHERE EXISTS (
SELECT 1
FROM special_user su
WHERE ', ' || u.userpeers || ', ' LIKE '%, ' || su.userId || ', %'
)
Což pro ukázková data:
CREATE TABLE "USER" ( UserID, UserPeers, Gender ) AS
SELECT 'Mike', 'Tom1, Bob1', 'M' FROM DUAL UNION ALL
SELECT 'John', 'Tom1, Greg1', 'M' FROM DUAL UNION ALL
SELECT 'Sally', 'Mike1, John1', 'F' FROM DUAL UNION ALL
SELECT 'Sara', 'Sally1, Bob1, TimTom1', 'F' FROM DUAL;
CREATE TABLE special_user ( UserID ) AS
SELECT 'Tom1' FROM DUAL UNION ALL
SELECT 'John1' FROM DUAL;
Poznámka:Změnil jsem Sally
přidat peer TimTom1
který by neměl odpovídat, i když Tom1
podřetězec je zahrnut.
Které výstupy:
db<>fiddle zde