照合する文字列と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 こちら