배열의 크기를 찾는 방법이 있습니까?
예를 들어
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;
cardinality
1 차원 또는 다차원 배열에있는 모든 요소의 수를 반환합니다. 그래서 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
하지 않습니다 . 그들이 그 논리로 무엇을 생각하고 있는지 전혀 모릅니다. 0
cardinality
사소한 읽기 문서입니다 .
SELECT array_length(id, 1) FROM example;
array_length
. 문서에서 해당 정보를 찾지 못했습니다.
null
하고 3
대신 0
하고 3
작전의 예를 들어. 사용 cardinality
하기 쉽고 예상치 못한 것보다 덜 예상하기 때문에 대답을 받아 들일 때 확실히 사용을 장려해야합니다 (나는 99.999 %의 배열 사용이 1 차원이라고 생각합니다)
postgres 8.2에서 array_upper를 사용해야했습니다.