[PostgreSQL] λ°°μ—΄

PostgreSQL은 고유의 λ°°μ—΄ νƒ€μž…μ„ μ œκ³΅ν•œλ‹€.



νƒ€μž…

νƒ€μž…μ€ μš”μ†Œ νƒ€μž… 였λ₯Έμͺ½μ— []λ₯Ό λΆ™μ΄λŠ” κ²ƒμœΌλ‘œ ν‘œν˜„ν•  수 μžˆλ‹€.

근데 μ΄μœ λŠ” λͺ¨λ₯΄κ² λŠ”λ° DBeaver 같은 νˆ΄μ—μ„œλŠ” μ „λΆ€ μ•žμ— '_'λ₯Ό 뢙인 νƒ€μž…μœΌλ‘œ ν‘œν˜„λ˜λ”λΌ
μ œλŒ€λ‘œ 지원을 ν•˜μ§€ λͺ»ν•˜λŠ” 뢀뢄인 것 κ°™λ‹€.

2차원 μ΄μƒμœΌλ‘œ μ€‘μ²©ν•˜λŠ” 것도 κ°€λŠ₯ν•˜λ‹€.

λŒ€κ΄„ν˜Έ λŒ€μ‹  ARRAY ν‚€μ›Œλ“œλ₯Ό λΆ™μ΄λŠ” κ²ƒμœΌλ‘œλ„ 배열을 ν‘œν˜„ν•  수 μžˆλ‹€.

이게 더 ν‘œμ€€μ μΈ λ°©λ²•μ΄λΌκ³ λŠ” ν•œλ‹€.



생성

배열은 Array[n, n2, n3, ...] 의 ν˜•νƒœλ‘œ 생성할 μˆ˜κ°€ μžˆλ‹€.

μ‚½μž…μ΄λ‚˜ μˆ˜μ •μ„ ν•  λ•ŒλŠ” '{N, N2, N3, ...}'의 ν˜•νƒœλ‘œλ„ ν‘œν˜„ν•  μˆ˜κ°€ μžˆλ‹€.

μžλ™ λ³€ν™˜μ΄ κ°€λŠ₯ν•œ κ²½μš°μ—λŠ” κ·Έλƒ₯ μ΄λ ‡κ²Œ 써도 λ˜λŠ”λ°,

μ•„λ‹ˆλ©΄ μ΄λ ‡κ²Œ μˆ˜λ™ μΊμŠ€νŒ…μ„ ν•΄μ€˜μ•Ό ν•œλ‹€.



μ ‘κ·Ό

λ°°μ—΄ 접근은 기타 μ–Έμ–΄λ“€κ³Ό λ§ˆμ°¬κ°€μ§€λ‘œ λŒ€κ΄„ν˜Έμ— μΈλ±μŠ€κ°’μ„ λ„£μ–΄μ„œ μˆœμ„œλŒ€λ‘œ μ ‘κ·Όν•œλ‹€.
μ—¬κΈ°μ„œ μœ μ˜ν•  점은, 인덱슀 μ‹œμž‘μ΄ 1μ΄λž€ 것이닀. 인덱슀 1이 첫번째 μš”μ†Œλ‹€.

그리고 [μ‹œμž‘:끝]의 ν˜•νƒœλ‘œ 인덱싱을 μ‹œλ„ν•˜λ©΄, κ·Έ 인덱슀 λ²”μœ„μ˜ 값을 λ‹€μ‹œ λ°°μ—΄λ‘œ μƒμ„±ν•΄μ„œ λ°˜ν™˜ν•΄μ€€λ‹€.



μ—°μ‚°μž

또 λ°°μ—΄ νƒ€μž…μ€ λ‹€μ–‘ν•œ κΈ°λ³Έ μ—°μ‚°μžλ“€μ„ μ œκ³΅ν•œλ‹€.

=λŠ” μ™„μ „ 동등 비ꡐꡐ, 기타 λΆ€λ“±ν˜Έλ“€μ€ μˆœμ„œλŒ€λ‘œ λ‹€ 비ꡐλ₯Ό μˆ˜ν–‰ν•œλ‹€.
@>와 @<λŠ” μš”μ†Œκ°€ μ „λΆ€ ν¬ν•¨λ˜λŠ”μ§€λ₯Ό ν™•μΈν•˜κ³ , ||λŠ” 배열을 μ—°κ²°ν•œλ‹€.



기타

이외에도 Array_Agg λ“± 리슀트λ₯Ό μ „λΆ€ λ¬Άμ–΄μ„œ λ°°μ—΄λ‘œ λ§Œλ“œλŠ” ν•¨μˆ˜λ“€λ„ 제곡이 λœλ‹€.

unnest ν•¨μˆ˜λ₯Ό μ‚¬μš©ν•˜λ©΄ 또 배열을 리슀트둜 ν’€μ–΄λ‚Ό μˆ˜λ„ 있으며

λ¬Έμžμ—΄λ‘œλ„ νŽΈλ¦¬ν•˜κ²Œ λ³€ν™˜μ΄ κ°€λŠ₯ν•˜κ³ ..

κ·Έ λ°˜λŒ€λ„ λ™μΌν•˜λ‹€.



μ„±λŠ₯?

μ„±λŠ₯적으둜 μ•„μ£Ό 큰 λ¬Έμ œκ°€ λ˜μ§€λŠ” μ•ŠλŠ” κ²ƒμœΌλ‘œ 보인닀.
인덱슀λ₯Ό 달고 κΈ°λ³Έ λ°°μ—΄ μ—°μ‚°μž, <@, @>, =, &&만 μ‚¬μš©ν•œλ‹€λ©΄ 인덱슀λ₯Ό νƒ€λŠ” 것도 κ°€λŠ₯ν•˜λ‹€κ³  ν•œλ‹€.


κ·Έλ ‡λ‹€.


μ°Έμ‘°
https://www.postgresql.org/docs/9.1/arrays.html
https://www.postgresql.org/docs/9.6/functions-array.html
https://stackoverflow.com/questions/4058731/can-postgresql-index-array-columns