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

Terapkan `trim()` dan `regexp_replace()` pada larik teks

Kode Anda tidak pernah mengubah multiplevalues Himpunan. Itu hanya mengubah setiap elemen, lalu membuang nilai baru itu.

Anda memerlukan variabel tempat Anda dapat menggabungkan hasil menjadi:

CREATE OR REPLACE FUNCTION manipulate_array(multiplevalues text[])
RETURNS text[] AS 
$BODY$
  DECLARE 
    singlevalue text;
    l_result text[] := '{}'::text[]; -- initialize with an empty array
  BEGIN
    FOREACH singlevalue IN ARRAY multiplevalues LOOP
        SELECT trim(regexp_replace(singlevalue, '\s+', ' ', 'g')) INTO singlevalue;
        l_result := l_result || singlevalue; -- append to the result
    END LOOP;

    RETURN l_result; -- return the new array, not the old one
  END;
$BODY$
LANGUAGE plpgsql VOLATILE
COST 100;

Tapi ini bisa dilakukan sedikit lebih sederhana menggunakan unnest dan array_agg dan fungsi SQL biasa (bukan PL/pgSQL)

Anda harus terlebih dahulu menghapus sarang array, memangkas nilai dan agregat yang kembali ke dalam array.

Saya tidak yakin saya mengerti apa yang Anda coba lakukan, tetapi ini akan memangkas semua nilai di dalam array dan mengembalikan yang baru:

create function trim_all(p_values text[])
  returns text[]
as
$$
  select array_agg(trim(regexp_replace(t.v, '\s+', ' ', 'g')) order by t.nr)
    from unnest(p_values) with ordinality as t(v, nr);
$$
language sql;


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Pencarian teks lengkap di Postgres atau CouchDB?

  2. Format tanggal UTC Postgres &pemeran zaman, tanda inversi

  3. Apakah ada cara untuk menonaktifkan pembaruan/penghapusan tetapi masih mengizinkan pemicu untuk melakukannya?

  4. psycopg2 pada pohon kacang elastis - tidak dapat menggunakan aplikasi

  5. Tabel bernilai Parameter Setara di Postgresql