Anda dapat membungkus string yang cocok dengan Anda dan string yang berisi userid
Anda ingin mencocokkan di ,
pembatas sehingga Anda memastikan Anda cocok dengan userid
yang lengkap (daripada secara naif menggunakan LIKE
tanpa mempertimbangkan pembatas di sekitarnya dan hanya mencocokkan sebagian userid
). Seperti ini:
SELECT *
FROM "USER" u
WHERE EXISTS (
SELECT 1
FROM special_user su
WHERE ', ' || u.userpeers || ', ' LIKE '%, ' || su.userId || ', %'
)
Yang, untuk data sampel:
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;
Catatan:Saya mengubah Sally
untuk menambahkan rekan TimTom1
yang tidak boleh dicocokkan meskipun Tom1
substring disertakan.
Keluaran mana:
db<>fiddle di sini