Можете да обвиете както низа, с който съвпадате, така и низа, съдържащ userid
искате да съвпаднете в ,
разделител, така че да сте сигурни, че отговаряте на пълен userid
(вместо наивно използване на LIKE
без да се вземат предвид околните разделители и да се съвпада само с частичен userid
). Като това:
SELECT *
FROM "USER" u
WHERE EXISTS (
SELECT 1
FROM special_user su
WHERE ', ' || u.userpeers || ', ' LIKE '%, ' || su.userId || ', %'
)
Което за примерните данни:
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;
Забележка:Промених Sally
за добавяне на партньор TimTom1
които не трябва да съвпадат, въпреки че Tom1
е включен подниз.
Кое извежда:
db<>fiddle тук