Vous pouvez envelopper à la fois la chaîne à laquelle vous faites correspondre et la chaîne contenant le userid
vous voulez faire correspondre les ,
délimiteur afin de vous assurer que vous correspondez à un userid
complet (plutôt que d'utiliser naïvement LIKE
sans tenir compte des délimiteurs environnants et ne correspondant qu'à un userid
partiel ). Comme ceci :
SELECT *
FROM "USER" u
WHERE EXISTS (
SELECT 1
FROM special_user su
WHERE ', ' || u.userpeers || ', ' LIKE '%, ' || su.userId || ', %'
)
Qui, pour les exemples de données :
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;
Remarque :J'ai changé Sally
pour ajouter un pair TimTom1
qui ne doit pas correspondre même si le Tom1
la sous-chaîne est incluse.
Qui sort :
db<>violon ici