Sie können sowohl die Zeichenfolge, mit der Sie übereinstimmen, als auch die Zeichenfolge umschließen, die die userid
enthält Sie im ,
übereinstimmen möchten Trennzeichen, damit Sie sicherstellen, dass Sie mit einer vollständigen userid
übereinstimmen (anstatt naiv LIKE
zu verwenden ohne Berücksichtigung der umgebenden Trennzeichen und nur mit einer teilweisen userid
übereinstimmen ). So:
SELECT *
FROM "USER" u
WHERE EXISTS (
SELECT 1
FROM special_user su
WHERE ', ' || u.userpeers || ', ' LIKE '%, ' || su.userId || ', %'
)
Was für die Beispieldaten:
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;
Hinweis:Ich habe Sally
geändert um einen Peer TimTom1
hinzuzufügen das sollte nicht übereinstimmen, obwohl der Tom1
Teilstring ist enthalten.
Welche Ausgaben:
db<>fiddle hier