Struct 함수
Struct 함수
struct 데이터를 생성·추출·조작하는 데 쓰이는 DuckDB 내장 함수들을 정리한 문서예요. 각 함수의 설명과 예시를 함께 살펴볼게요.
출처: 문서
본문
| 이름 | 설명 |
|---|---|
struct.entry |
명명된 STRUCT에서 struct_extract의 별칭으로 쓰이는 점 표기. |
struct[entry] |
명명된 STRUCT에서 struct_extract의 별칭으로 쓰이는 대괄호 표기. |
struct[idx] |
unnamed STRUCT(튜플)에서 인덱스(1 기반)를 사용해 struct_extract의 별칭으로 쓰이는 대괄호 표기. |
row(any, ...) |
인자 값들을 담은 unnamed STRUCT(튜플) 생성. |
struct_concat(structs...) |
여러 structs를 단일 STRUCT로 병합. |
struct_contains(struct, entry) |
STRUCT가 지정된 entry를 포함하는지 확인. |
struct_extract(struct, 'entry') |
STRUCT에서 명명된 entry 추출. |
struct_extract(struct, idx) |
unnamed STRUCT(튜플)에서 인덱스(1 기반)를 사용해 entry 추출. |
struct_extract_at(struct, idx) |
STRUCT(튜플)에서 인덱스(1 기반)를 사용해 entry 추출. |
struct_insert(struct, name := any, ...) |
기존 STRUCT에 필드 추가. |
struct_pack(name := any, ...) |
인자 값들을 담은 STRUCT 생성. entry 이름은 바인딩된 변수 이름이 됨. |
struct_position(struct, entry) |
STRUCT 내 entry의 인덱스 반환(1 기반), 없으면 NULL 반환. |
struct_update(struct, name := any, ...) |
기존 STRUCT의 필드 추가 또는 업데이트. |
struct_values(struct) |
STRUCT의 값들을 unnamed STRUCT(튜플)로 반환. |
struct.entry
| 설명 | 명명된 STRUCT에서 struct_extract의 별칭으로 쓰이는 점 표기 |
| 예시 | ({'i': 3, 's': 'string'}).i |
| 결과 | 3 |
struct[entry]
| 설명 | 명명된 STRUCT에서 struct_extract의 별칭으로 쓰이는 대괄호 표기 |
| 예시 | ({'i': 3, 's': 'string'})['i'] |
| 결과 | 3 |
struct[idx]
| 설명 | unnamed STRUCT(튜플)에서 인덱스(1 기반)를 사용해 struct_extract의 별칭으로 쓰이는 대괄호 표기 |
| 예시 | (row(42, 84))[1] |
| 결과 | 42 |
row(any, ...)
| 설명 | 인자 값들을 담은 unnamed STRUCT(튜플) 생성 |
| 예시 | row(i, i % 4, i / 4) |
| 결과 | (10, 2, 2.5) |
struct_concat(structs...)
| 설명 | 여러 structs를 단일 STRUCT로 병합 |
| 예시 | struct_concat(struct_pack(i := 4), struct_pack(s := 'string')) |
| 결과 | {'i': 4, 's': string} |
struct_contains(struct, entry)
| 설명 | STRUCT가 지정된 entry를 포함하는지 확인 |
| 예시 | struct_contains(row(1, 2, 3), 2) |
| 결과 | true |
| 별칭 | struct_has |
struct_extract(struct, 'entry')
| 설명 | STRUCT에서 명명된 entry 추출 |
| 예시 | struct_extract({'i': 3, 'v2': 3, 'v3': 0}, 'i') |
| 결과 | 3 |
struct_extract(struct, idx)
| 설명 | unnamed STRUCT(튜플)에서 인덱스(1 기반)를 사용해 entry 추출 |
| 예시 | struct_extract(row(42, 84), 1) |
| 결과 | 42 |
struct_extract_at(struct, idx)
| 설명 | STRUCT(튜플)에서 인덱스(1 기반)를 사용해 entry 추출 |
| 예시 | struct_extract_at({'v1': 10, 'v2': 20, 'v3': 3}, 20) |
| 결과 | 20 |
struct_insert(struct, name := any, ...)
| 설명 | 기존 STRUCT에 필드 추가 |
| 예시 | struct_insert({'a': 1}, b := 2) |
| 결과 | {'a': 1, 'b': 2} |
struct_pack(name := any, ...)
| 설명 | 인자 값들을 담은 STRUCT 생성. entry 이름은 바인딩된 변수 이름이 됨 |
| 예시 | struct_pack(i := 4, s := 'string') |
| 결과 | {'i': 4, 's': string} |
struct_position(struct, entry)
| 설명 | STRUCT 내 entry의 인덱스 반환(1 기반), 없으면 NULL 반환 |
| 예시 | struct_position(row(1, 2, 3), 2) |
| 결과 | 2 |
| 별칭 | struct_indexof |
struct_update(struct, name := any, ...)
| 설명 | 기존 STRUCT의 필드 추가 또는 업데이트 |
| 예시 | struct_update({'a': 1, 'b': 2}, b := 3, c := 4) |
| 결과 | {'a': 1, 'b': 3, 'c': 4} |
struct_values(struct)
| 설명 | STRUCT의 값들을 unnamed STRUCT(튜플)로 반환 |
| 예시 | struct_values({'a': 1, 'b': 2, 'c': 3}) |
| 결과 | (1, 2, 3) |
더 알아보기 (Learn more)
- struct 데이터 타입 자체는
sql/data_types/struct문서를 참고해 주세요.