- 카테고리:
반정형 및 정형 데이터 함수 (배열/오브젝트)
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(16777216))[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" |
| | } |
+----+------------------------+