Você pode agrupar a string com a qual está correspondendo e a string que contém o
userid você deseja corresponder no , delimitador para garantir que você corresponda a um userid completo (em vez de usar ingenuamente LIKE sem considerar os delimitadores circundantes e apenas correspondendo a um userid parcial ). Assim:SELECT *
FROM "USER" u
WHERE EXISTS (
SELECT 1
FROM special_user su
WHERE ', ' || u.userpeers || ', ' LIKE '%, ' || su.userId || ', %'
)
Que, para os dados de amostra:
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;
Observação:mudei
Sally para adicionar um par TimTom1 que não deve ser correspondido mesmo que o Tom1 substring está incluída. Quais saídas:
db<>fiddle aqui