배열의 크기를 찾는 방법이 있습니까?
예를 들어
CREATE TABLE example (id integer[]) ;
INSERT INTO exam VALUES ( '{}');
INSERT INTO exam VALUES ( '{5,6,7}');
이로부터 다음과 같은 결과를 얻을 수있는 가능성이 있습니까?
size
0
3
답변:
vyegorov가 언급했듯이 array_length트릭을 수행합니다. 또는 배열이 1 차원 (아마도)이고 PostgreSQL 9.4 이상을 실행중인 경우 다음을 사용할 수 있습니다 cardinality.
SELECT cardinality(id) FROM example;
cardinality1 차원 또는 다차원 배열에있는 모든 요소의 수를 반환합니다. 그래서 select cardinality(ARRAY[[1,2], [3,4]]);반환 4하는 반면에 select array_length(ARRAY[[1,2], [3,4]], 1)반환 2합니다. 첫 번째 차원을 세는 array_length것이 더 안전한 방법입니다.
text유형이 있는 필드에 저장된 배열에서도 작동합니다 function array_length(text[]) does not exist. while ;)
null하지 않습니다 . 그들이 그 논리로 무엇을 생각하고 있는지 전혀 모릅니다. 0cardinality
사소한 읽기 문서입니다 .
SELECT array_length(id, 1) FROM example;
array_length. 문서에서 해당 정보를 찾지 못했습니다.
null하고 3대신 0하고 3작전의 예를 들어. 사용 cardinality하기 쉽고 예상치 못한 것보다 덜 예상하기 때문에 대답을 받아 들일 때 확실히 사용을 장려해야합니다 (나는 99.999 %의 배열 사용이 1 차원이라고 생각합니다)
postgres 8.2에서 array_upper를 사용해야했습니다.