기본적으로 배열에서 원하는 값을 찾기 위해서 주로 =, >, <, >=, <= 의 기본적인 연산자를 통해서 찾곤 한다.
Postgresql 에서는 배열의 값을 찾는 여러 배열 연산자가 있어 정리해보려고 한다.
내가 배열 연산자를 찾게된 이유는 Postgresql 에서 tstzrange 라는 컬럼 타입이 있는데 해당 컬럼은 2개의 timestamptz 값을 가지는 배열의 형태로 되어있다. 따라서 tstzrange 타입의 컬럼 값을 통해서 값을 찾기 위해서는 배열 연산자를 통해 원하는 값을 찾아야 하는데 찾아보니 종류가 생각보다 많아서 정리해보려고 한다.
Equal Operator (=)
배열이 같은지 비교하는 연산자
select
array[1, 2] = array[1, 2] as equal_operator, -- True
array[1, 2] = array[2, 3] as equal_operator -- False
;
Not Equal Operator (<>)
배열이 다른지 비교하는 연산자
select
array[1, 2] <> array[2, 3] as not_equal_operator, -- True
array[1, 2] <> array[1, 2] as not_equal_operator -- false
;
less than Operator (<)
배열이 작은지 비교하는 연산자
select
array[1, 2] < array[1, 3] as less_than_operator, -- True
array[1, 2] < array[1, 1] as less_than_operator -- False
;
greater than Operator (>)
배열이 큰지 비교하는 연산자
select
array[1, 2] > array[1, 3] as greater_than_operator, -- False
array[1, 2] > array[1, 1] as greater_than_operator -- True
;
less than or equal Operator (<=)
배열이 작거나 같은지 비교하는 연산자
select
array[1, 2] <= array[1, 3] as less_than_or_equal_operator, -- True
array[1, 2] <= array[1, 1] as less_than_or_equal_operator -- False
;
greater than or equal Operator (>=)
배열이 크거나 같은지 비교하는 연산자
select
array[1, 2] >= array[1, 3] as greater_than_or_equal_operator, -- False
array[1, 2] >= array[1, 1] as greater_than_or_equal_operator -- True
;
Contains Operator (@>)
배열이 포함되어 있는지 비교하는 연산자
select
array[1, 2, 3, 4, 5] @> array[1, 2, 3] as contain_operator, -- True
array[1, 2, 3, 4, 5] @> array[1, 2, 8] as contain_operator -- False
;
Is Contained by Operator (<@)
배열에 포함되어 있는지 비교하는 연산자
select
array[1, 2, 3] <@ array[1, 2, 3, 4, 5] as is_contained_by_operator, -- True
array[1, 2, 3, 4, 5] <@ array[1, 2, 8] as is_contained_by_operator -- False
;
Overlap Operator (&&)
공통된 원소를 가지고 있는지 비교한느 연산자
select
array[1, 2] && array[1, 3, 4] as overlay_operator, -- True
array[1, 2] && array[3, 4, 5] as overlay_operator -- False
;
Array-to-Array Concatenation (||)
원소 또는 리스트와 리스트를 합치는 연산자
단, 이중 배열의 경우 원소의 배열의 길이가 같아야 한다.
select
3 || array[4, 5] as array_to_array_concantenation_operator, -- [3, 4, 5]
array[1, 2, 3] || 4 as array_to_array_concantenation_operator, -- [1, 2, 3, 4]
array[1, 2, 3] || array[4, 5] as array_to_array_concantenation_operator, -- [1, 2, 3, 4, 5]
array[1, 2, 3] || array[[4, 5, 6], [6, 7, 8]] as array_to_array_concantenation_operator -- [[1, 2, 3], [4, 5, 6], [6, 7, 8]]
;
[참고 레퍼런스]
9.18. Array Functions and Operators
9.18. Array Functions and Operators Table 9.48 shows the operators available for array types. Table 9.48. Array Operators Operator Description Example Result = equal …
www.postgresql.org