Oracle
 sql >> Teknologi Basis Data >  >> RDS >> Oracle

gunakan LIKE dan IN dengan subquery di sql

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



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Mendapatkan waktu yang benar dari tanggal Oracle di Solr DataImportHandler

  2. Cara Mengambil Data dari Kursor di Oracle Menggunakan For Loop

  3. SQL beralih dari decode ke case

  4. Mengapa saya sepertinya tidak bisa memaksa Oracle 11g untuk mengkonsumsi lebih banyak CPU untuk satu kueri SQL?

  5. RESULT_CACHE kosong RESULT_ON