- 카테고리:
반정형 및 정형 데이터 함수 (배열/오브젝트)
OBJECT_DELETE¶
하나 이상의 키가 제거된 입력(즉, 소스) 오브젝트의 내용을 포함하는 오브젝트를 반환합니다.
구문¶
OBJECT_DELETE( <object>, <key1> [, <key2>, ... ] ) 인자¶
object소스 오브젝트입니다.
key1,key2반환된 오브젝트에서 생략할 키입니다.
반환¶
이 함수는 OBJECT 형식의 값을 반환합니다.
사용법 노트¶
정형 OBJECT 의 경우:
키인 인자의 경우 상수를 지정해야 합니다.
지정한 키가 OBJECT 유형 정의에 포함되지 않으면 호출이 실패합니다. 예를 들어, OBJECT 값에 지정된 키
zip_code가 포함되어 있지 않으므로 다음 호출은 실패합니다.SELECT OBJECT_DELETE( {'city':'San Mateo','state':'CA'}::OBJECT(city VARCHAR,state VARCHAR), 'zip_code' );
093201 (23001): Function OBJECT_DELETE: expected structured object to contain field zip_code but it did not.이 함수는 정형 OBJECT 값을 반환합니다. OBJECT 값의 유형은 삭제된 키를 제외합니다. 예를 들어,
city키를 제거한다고 가정해 보겠습니다.SELECT OBJECT_DELETE( {'city':'San Mateo','state':'CA'}::OBJECT(city VARCHAR,state VARCHAR), 'city' ) AS new_object, SYSTEM$TYPEOF(new_object);
이 함수는
city키가 포함되지 않은OBJECT(state VARCHAR)유형의 OBJECT 값을 반환합니다.+-----------------+----------------------------+ | NEW_OBJECT | SYSTEM$TYPEOF(NEW_OBJECT) | |-----------------+----------------------------| | { | OBJECT(state VARCHAR)[LOB] | | "state": "CA" | | | } | | +-----------------+----------------------------+
함수가 OBJECT 값에서 모든 키를 제거하면 함수는
OBJECT()유형의 빈 정형 OBJECT 값을 반환합니다.SELECT OBJECT_DELETE( {'state':'CA'}::OBJECT(state VARCHAR), 'state' ) AS new_object, SYSTEM$TYPEOF(new_object);
+------------+---------------------------+ | NEW_OBJECT | SYSTEM$TYPEOF(NEW_OBJECT) | |------------+---------------------------| | {} | OBJECT()[LOB] | +------------+---------------------------+
정형 OBJECT 값의 유형에 키-값 페어가 포함된 경우 해당 페어의 이름과 유형이 유형 괄호 안에 포함됩니다(예: OBJECT(도시 VARCHAR)). 빈 정형 OBJECT 값에는 키-값 페어가 포함되어 있지 않으므로 괄호는 비어 있습니다.
예¶
이 쿼리는 소스 오브젝트에서 a 및 b 키가 제외된 오브젝트를 반환합니다.
SELECT OBJECT_DELETE(OBJECT_CONSTRUCT('a', 1, 'b', 2, 'c', 3), 'a', 'b') AS object_returned; +-----------------+ | OBJECT_RETURNED | |-----------------| | { | | "c": 3 | | } | +-----------------+ 테이블을 만들고 OBJECT 값으로 행을 삽입합니다. 이 예제에서는 INSERT 문에 OBJECT 상수 를 사용합니다.
CREATE OR REPLACE TABLE object_delete_example ( id INTEGER, ov OBJECT); INSERT INTO object_delete_example (id, ov) SELECT 1, { 'employee_id': 1001, 'employee_date_of_birth': '12-10-2003', 'employee_contact': { 'city': 'San Mateo', 'state': 'CA', 'phone': '800-555‑0100' } }; INSERT INTO object_delete_example (id, ov) SELECT 2, { 'employee_id': 1002, 'employee_date_of_birth': '01-01-1990', 'employee_contact': { 'city': 'Seattle', 'state': 'WA', 'phone': '800-555‑0101' } }; 테이블을 쿼리하여 데이터를 확인합니다.
SELECT * FROM object_delete_example; +----+-------------------------------------------+ | ID | OV | |----+-------------------------------------------| | 1 | { | | | "employee_contact": { | | | "city": "San Mateo", | | | "phone": "800-555‑0100", | | | "state": "CA" | | | }, | | | "employee_date_of_birth": "12-10-2003", | | | "employee_id": 1001 | | | } | | 2 | { | | | "employee_contact": { | | | "city": "Seattle", | | | "phone": "800-555‑0101", | | | "state": "WA" | | | }, | | | "employee_date_of_birth": "01-01-1990", | | | "employee_id": 1002 | | | } | +----+-------------------------------------------+ 쿼리 출력에서 employee_date_of_birth 키를 삭제하려면 다음 쿼리를 실행합니다.
SELECT id, OBJECT_DELETE(ov, 'employee_date_of_birth') AS contact_without_date_of_birth FROM object_delete_example; +----+-------------------------------+ | ID | CONTACT_WITHOUT_DATE_OF_BIRTH | |----+-------------------------------| | 1 | { | | | "employee_contact": { | | | "city": "San Mateo", | | | "phone": "800-555‑0100", | | | "state": "CA" | | | }, | | | "employee_id": 1001 | | | } | | 2 | { | | | "employee_contact": { | | | "city": "Seattle", | | | "phone": "800-555‑0101", | | | "state": "WA" | | | }, | | | "employee_id": 1002 | | | } | +----+-------------------------------+ employee_contact 중첩된 오브젝트를 쿼리하고 phone 키를 제거하려면 다음 쿼리를 실행합니다.
SELECT id, OBJECT_DELETE(ov:"employee_contact", 'phone') AS contact_without_phone FROM object_delete_example; +----+------------------------+ | ID | CONTACT_WITHOUT_PHONE | |----+------------------------| | 1 | { | | | "city": "San Mateo", | | | "state": "CA" | | | } | | 2 | { | | | "city": "Seattle", | | | "state": "WA" | | | } | +----+------------------------+