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

Cách cập nhật mảng trong PostgreSQL

PostgreSQL giúp bạn dễ dàng làm việc với kiểu dữ liệu mảng. Đôi khi bạn có thể cần cập nhật mảng trong PostgreSQL với dữ liệu mới. Trong bài viết này, chúng ta sẽ xem xét cách thay đổi mảng trong PostgreSQL, sửa đổi mảng trong PostgreSQL và hợp nhất các mảng trong PostgreSQL.


Cách cập nhật mảng trong PostgreSQL

Dưới đây là các cách khác nhau để cập nhật mảng trong PostgreSQL. Giả sử bạn có cột mảng sau.

# create table employees ( 
     id int, 
     name varchar, 
     sales integer[] 
);

Trong ví dụ trên, chúng tôi đã tạo cột bán hàng dưới dạng một mảng các số nguyên.

Hãy để chúng tôi chèn dữ liệu vào cột mảng của chúng tôi.

# insert into employees (id, name, sales)
          values (1, ' John Doe', ARRAY [9,7,5,4,3,2]),
                 (2, ' Jim Day', ARRAY [8,6,3,2,9,2]);

# select * from employees;
 id |   name    |     sales
----+-----------+---------------
  1 |  John Doe | {9,7,5,4,3,2}
  2 |  Jim Day  | {8,6,3,2,9,2}


Thay thế tất cả các phần tử trong một Mảng

Bạn có thể dễ dàng thay thế tất cả các phần tử của mảng bằng câu lệnh UPDATE… SET.

# update employees 
  set sales = '{10,12,31,10,11}' 
  where id=1;

# select * from employees;
 id |   name    |      sales
----+-----------+------------------
  2 |  Jim Day  | {8,6,3,2,9,2}
  1 |  John Doe | {10,12,31,10,11}

Trong câu lệnh CẬP NHẬT ở trên, chúng tôi cung cấp các giá trị mảng trong dấu ngoặc nhọn được đặt trong dấu ngoặc kép. Postgres sẽ thay thế toàn bộ mảng cho các hàng phù hợp với điều kiện WHERE.


Thay thế một số phần tử trong Mảng

Bạn cũng có thể thay thế các phần tử mảng cụ thể như được hiển thị bên dưới.

=# update employees
             set sales[2] = 41
             where id=1;

# select * from employees;
 id |   name    |      sales
----+-----------+------------------
  2 |  Jim Day  | {8,6,3,2,9,2}
  1 |  John Doe | {10,41,31,10,11}

Trong câu lệnh trên, chúng tôi chỉ thay thế phần tử mảng thứ hai bằng cách đặt giá trị sales [2].


Nối và Thêm vào Mảng

Bạn cũng có thể nối và thêm các giá trị vào mảng của mình bằng cách sử dụng array_append array_prepend các chức năng tương ứng, như được hiển thị bên dưới.

# update employees
             set sales = array_append(sales, 1)
             where id=1;

# select * from employees;
 id |   name    |       sales
----+-----------+--------------------
  2 |  Jim Day  | {8,6,3,2,9,2}
  1 |  John Doe | {10,41,31,10,11,1}

Đây là truy vấn để thêm trước vào một mảng.

# update employees
           set sales = array_prepend(9,sales)
           where id=1;

# select * from employees;
 id |   name    |        sales
----+-----------+----------------------
  2 |  Jim Day  | {8,6,3,2,9,2}
  1 |  John Doe | {9,10,41,31,10,11,1}

Xin lưu ý, trong array_append , bạn cần chỉ định giá trị được thêm vào làm đối số thứ hai trong hàm. Trong trường hợp array_prepend , bạn cần chỉ định nó làm phần tử đầu tiên.


Xóa phần tử mảng

Tương tự, bạn có thể sử dụng array_remove hàm xóa phần tử khỏi mảng.

# select array_remove(sales, 9) as reduced_array from employees where id=1;
   reduced_array
--------------------
 {10,41,31,10,11,1}

Trong array_remove bạn cần chỉ định phần tử mảng mà bạn muốn xóa.


Hợp nhất các mảng trong PostgreSQL

Bạn có thể hợp nhất hai mảng trong PostgreSQL bằng cách sử dụng array_cat chức năng

# select array_cat(sales, '{9,3}') as merged_array 
           from employees where id=1;
       merged_array
--------------------------
 {9,10,41,31,10,11,1,9,3}

# select array_cat(array[1,2],'{9,3}') as merged_array 
      from employees where id=1;
 merged_array
--------------
 {1,2,9,3}

Trong array_cat , bạn có thể chuyển cột mảng hoặc sử dụng đối tượng chữ ARRAY.

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. Chọn nhiều giá trị max () bằng cách sử dụng một câu lệnh SQL

  2. Những thách thức khi mở rộng quy mô cơ sở dữ liệu Moodle PostgreSQL

  3. Hàm PostgreSQL trả về nhiều tập kết quả

  4. Không thể sử dụng bảng có tên người dùng trong chế độ ngủ đông postgresql

  5. HikariCP - kết nối không khả dụng