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

Postgresql regexp_replace

Anda dapat menggunakan CASE ekspresi untuk mengekstrak dan menguji tahun dan hanya mengganti jika tahun berada dalam kisaran yang Anda inginkan:

with test_data (col1) as (
  values ('sdfg 2000'), ('foo 1983'), ('bar 2010'), ('bla 1940')
)
select col1, 
       case 
         when nullif(regexp_replace(col1, '[^0-9]+',''),'')::int between 1990 and 2050 
              then regexp_replace(col1, '\d{4}', '', 'g')
         else col1 
       end as replaced
from test_data;

Hasil dalam:

col1      | replaced
----------+---------
sdfg 2000 | sdfg    
foo 1983  | foo 1983
bar 2010  | bar     
bla 1940  | bla 1940

nullif(..) diperlukan untuk nilai yang tidak mengandung angka apa pun. Jika Anda tidak memiliki nilai seperti itu, Anda dapat mengabaikannya.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Hasilkan uuid di windows postgresql

  2. Bisakah NLTK digunakan dalam Prosedur Tersimpan Postgres Python?

  3. Menambahkan batasan satu-dari-dua bukan nol di postgresql

  4. Permintaan garis bujur PostgreSQL

  5. Kunci baca baris PostgreSQL