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

Menemukan posisi nilai dalam array PostgreSQL

dokumentasi yang direkomendasikan menggunakan generate_subscripts fungsi. Fungsi di bawah ini mengemulasi array_search PHP :

CREATE FUNCTION array_search(needle ANYELEMENT, haystack ANYARRAY)
RETURNS INT AS $$
    SELECT i
      FROM generate_subscripts($2, 1) AS i
     WHERE $2[i] = $1
  ORDER BY i
$$ LANGUAGE sql STABLE;

Ini mengembalikan indeks kecocokan pertama, jika ada. Jika Anda ingin semua kecocokan, cukup ubah RETURNS INT ke RETURNS SETOF INT . Fungsi ini, sebagaimana adanya, mengembalikan NULL jika tidak ada yang cocok.

Fungsi ini hanya bekerja dengan array satu dimensi.

Juga, ingatlah bahwa array_search(NULL, a) selalu mengembalikan NULL , bahkan jika array berisi elemen null:

> SELECT array_search(null, array[1, 2, null, 4]);
 array_search 
--------------

(1 row)

Ini karena SQL menganggap NULL = NULL menjadi tidak diketahui (yaitu NULL ). Lihat functions-comparison . Jika Anda ingin array_search untuk dapat menemukan NULL elemen, ubah

     WHERE $2[i] = $1

untuk

     WHERE $2[i] IS NOT DISTINCT FROM $1


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Batasan nama kolom tabel Postgres?

  2. Ketidakcocokan Openshift dan net-ssh? (2.9.3-beta1 vs 2.9.2)

  3. Mengapa waktu habis kueri saat berada dalam batas waktu habisnya?

  4. Mendaftar dan Mengganti Basis Data di PostgreSQL

  5. AssertionError:koneksi database tidak diatur ke UTC