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