U kunt zowel de tekenreeks waar u mee overeenkomt als de tekenreeks met de userid
. laten inlopen u wilt matchen in de ,
scheidingsteken zodat u zeker weet dat u overeenkomt met een volledig userid
(in plaats van naïef LIKE
te gebruiken zonder rekening te houden met de omringende scheidingstekens en alleen te matchen met een gedeeltelijke userid
). Zoals dit:
SELECT *
FROM "USER" u
WHERE EXISTS (
SELECT 1
FROM special_user su
WHERE ', ' || u.userpeers || ', ' LIKE '%, ' || su.userId || ', %'
)
Wat, voor de voorbeeldgegevens:
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;
Opmerking:ik heb Sally
gewijzigd om een peer toe te voegen TimTom1
die niet overeenkomen, ook al is de Tom1
subtekenreeks is inbegrepen.
Welke uitgangen:
db<>fiddle hier