PostgreSQL
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> PostgreSQL

Tìm vị trí của một giá trị trong mảng PostgreSQL

tài liệu khuyến nghị sử dụng generate_subscripts hàm số. Hàm bên dưới array_search của PHP mô phỏng :

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;

Điều này trả về chỉ số của trận đấu đầu tiên, nếu có. Nếu bạn muốn tất cả các kết quả phù hợp, chỉ cần thay đổi RETURNS INT thành RETURNS SETOF INT . Hàm này, như vậy, trả về NULL nếu không tìm thấy kết quả phù hợp.

Hàm này chỉ hoạt động với mảng một chiều.

Ngoài ra, hãy nhớ rằng array_search(NULL, a) luôn trả về NULL , ngay cả khi mảng chứa các phần tử rỗng:

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

(1 row)

Điều này là do SQL coi NULL = NULL được không xác định (tức là NULL ). Xem các hàm-so sánh . Nếu bạn muốn array_search để có thể tìm thấy NULL các yếu tố, thay đổi

     WHERE $2[i] = $1

đến

     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. cài đặt các gói từ docker-compost.yml vào vùng chứa docker

  2. Cách tạo cột nhận dạng tương đương của SQL Server trong Postgres

  3. chỉ mục dataframe.to_sql làm khóa chính trong postgresql

  4. Truy vấn ActiveRecord chậm hơn nhiều so với SQL thông thường?

  5. Lỗi khi cài đặt Psycopg2 trên MacOS 10.9.5