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 và 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!