PostgreSQL
 sql >> Teknologi Basis Data >  >> RDS >> PostgreSQL

Alih-alih LIKE dan ~, mengapa hanya SIMILAR TO yang berfungsi saat melakukan pencocokan regex dengan alternatif

LIKE mendukung pencocokan pola menggunakan _ untuk setiap karakter tunggal dan % untuk setiap urutan karakter jadi ini:

SELECT 'thomas' LIKE '%(h|x)%'

tidak berfungsi karena LIKE tidak mengerti (...) untuk pengelompokan atau | untuk pergantian, itu hanyalah karakter literal dalam pola LIKE.

SIMILAR TO mendukung _ dan % sama seperti LIKE tetapi menambahkan pengelompokan dengan (...) , bergantian dengan | , dan beberapa hal lainnya seperti ini:

SELECT 'thomas' SIMILAR TO '%(h|x)%'

bekerja seperti yang diharapkan.

~* menggunakan regex POSIX jadi (...) adalah untuk pengelompokan dan | adalah untuk pergantian tetapi % hanyalah tanda persen; artinya begini:

SELECT 'thomas' ~* '%(h|x)%'

sedang mencari h atau x dikelilingi oleh tanda persen dan tidak berfungsi seperti yang Anda harapkan.

~* . Anda versi akan berfungsi jika Anda menggunakan regex yang tepat seperti:

SELECT 'thomas' ~* '(h|x)' -- alternation
SELECT 'thomas' ~* 'h|x'   -- alternation without an unnecessary grouping
SELECT 'thomas' ~* '[hx]'  -- or a character class

Dokumentasi yang ditautkan ke atas mencakup semua ini.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Konversi Akses ke PostgreSQL?

  2. Buat database PostgreSQL dengan cepat menggunakan Hibernate meskipun DB tidak ada

  3. Tidak dapat menemukan titik masuk bernama 'InterlockedIncrement' di DLL 'kernel32.dll' - [dilindungi email] 64 bit

  4. PostgreSQL:Paralelisme Kueri dalam Tindakan

  5. Apa cara yang tepat untuk menggunakan modul postgresql node.js?