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

Cách so sánh các mảng trong PostgreSQL

PostgreSQL giúp bạn dễ dàng so sánh các mảng giá trị bằng các toán tử đơn giản. Trong bài viết này, chúng ta sẽ xem xét cách so sánh các mảng trong cơ sở dữ liệu PostgreSQL.


Cách so sánh các mảng trong PostgreSQL

PostgreSQL cho phép bạn so sánh các mảng bằng cách sử dụng toán tử bình đẳng (=, <>), toán tử thứ tự (>, <,> =, <=), toán tử ngăn (@>, <@) và toán tử chồng chéo (&&).

Sau khi PostgreSQL so sánh các mảng, nó trả về t là true hoặc f là false.

Chúng ta hãy xem xét từng toán tử một.


So sánh Mảng cho bằng nhau

Các toán tử bình đẳng thực hiện so sánh từng phần tử để kiểm tra xem hai mảng có bằng nhau hay không.

Dưới đây là các truy vấn SQL mẫu để so sánh hai mảng bằng cách sử dụng toán tử bình đẳng. Hai mảng sau không bằng nhau.

postgres=# select array[2,3,4] = array[1,2,5] as compare;
 compare
---------
 f

postgres=# select array[2,3,4] <> array[1,2,5] as compare;
 compare
---------
 t


So sánh Mảng cho Thứ tự

Toán tử thứ tự (>, <,> =, <=) thực hiện so sánh từng phần tử giữa hai mảng để kiểm tra xem mỗi cặp phần tử có tuân theo điều kiện thứ tự yêu cầu hay không. Nếu không có sự phù hợp nào, nó trả về t, còn lại là f.

Đây là một ví dụ

postgres=# select
           array[1,3,5] >= array[1,3,4] as compare1,
           array[1,3,5] <= array[1,3,4,5] as compare2;
 compare1 | compare2
----------+----------
 t        | f

Trong phép so sánh đầu tiên, mỗi phần tử của mảng đầu tiên là> =mỗi phần tử của mảng thứ hai. Do đó, bạn hiểu đúng. Trong so sánh thứ hai, mảng đầu tiên không có phần tử thứ 4, bắt buộc để so sánh với phần tử thứ 4 của mảng thứ hai. Do đó, so sánh không thành công và kết quả là bạn nhận được sai.


So sánh các mảng để chứa

Toán tử vùng chứa (<@, @>) cho phép bạn kiểm tra xem một mảng có chứa một mảng khác bằng toán tử @> hay một mảng được chứa bởi một mảng khác bằng cách sử dụng toán tử <@.

#to check if elements of array['b', 'c', 'd'] contain elements of array['b', 'c']
postgres=# select array['b', 'c', 'd'] @> array['b', 'c'] as contains;
 contains
----------
 t

# to check if array[1, 2, 4] is contained by array[4, 5, 2, 1]
postgres=#select array[1, 2, 4] <@ array[4, 5, 2, 1] as is_contained_by;
 is_contained_by
-----------------
 t


So sánh Mảng để chồng chéo

Toán tử chồng chéo (&&) cho phép bạn kiểm tra xem có bất kỳ phần tử chung nào trong hai mảng hay không.

postgres=# select
postgres-# array[2, 4] && array[4, 3] as overlap1,
postgres-# array[0, 2] && array[1, 4] as overlap2;
 overlap1 | overlap2
----------+----------
 t        | f

Cần một công cụ báo cáo cho PostgreSQL? Ubiq giúp dễ dàng trực quan hóa dữ liệu trong vài phút và theo dõi trong trang tổng quan thời gian thực. Thử nó ngay hôm nay!

  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Xác minh kết nối cơ sở dữ liệu với pg-promise khi khởi động ứng dụng

  2. Cách giới hạn quyền truy cập vào cơ sở dữ liệu trong PostgreSQL

  3. Hướng dẫn của một chuyên gia về sao chép Slony cho PostgreSQL

  4. Sử dụng nhiều mục tiêu xung đột trong mệnh đề ON CONFLICT

  5. Cài đặt PL / Java 1.5.2 trong PostgreSQL 11