2012-06-25 38 views
25

Có cách nào để tìm kích thước của một mảng không?Cách tìm kích thước của một mảng trong postgresql

Ví dụ,

CREATE TABLE example (id integer[]) ; 

INSERT INTO exam VALUES ('{}'); 

INSERT INTO exam VALUES ('{5,6,7}'); 

Từ đó, là có bất kỳ khả năng để có được một kết quả như sau,

size 

0 

3 

Trả lời

34

Đó là tầm thường reading docs:

SELECT array_length(id, 1) FROM example; 
+5

Bạn có biết tham số thứ hai của hàm 'array_length' là gì. Không tìm thấy thông tin đó trong tài liệu. – suzanshakya

+10

@suzanshakya, độ dài của mảng được yêu cầu _dimension_ ツ – vyegorov

27

Như vyegorov đề cập, array_length sẽ thực hiện thủ thuật. Hoặc nếu bạn biết rằng mảng là 1 chiều (đó là khả năng) và đang chạy PostgreSQL 9.4 hoặc cao hơn, bạn có thể sử dụng cardinality:

SELECT cardinality(id) FROM example; 
+5

Nếu có ai có thể đề cập đến sự khác biệt lớn trong việc sử dụng mảng_length và cardinality sẽ là tuyệt đối –

+2

'cardinality' trả về số của tất cả các phần tử trong một mảng đơn hoặc đa chiều. Vì vậy, 'chọn cardinality (ARRAY [[1,2], [3,4]]);' sẽ trả về '4', trong khi' select array_length (ARRAY [[1,2], [3,4]], 1) 'sẽ trả về' 2'. Nếu bạn đang đếm thứ nguyên đầu tiên, 'array_length' là đặt cược an toàn hơn. – Roshambo

Các vấn đề liên quan