Função OBJECT_TRANSFORM
Transforma um objeto SUPER.
Sintaxe
OBJECT_TRANSFORM( input [KEEP path1, ...] [SET path1, value1, ..., ... ] )
Argumentos
- entrada
-
Uma expressão resolvida em um objeto do tipo SUPER.
- KEEP
-
Todos os valores path especificados nessa cláusula são mantidos e transportados para o objeto de saída.
A cláusula é opcional.
- path1, path2...
-
Literais de string constantes, no formato de componentes de caminho com aspas duplas delimitados por pontos finais. Por exemplo,
'"a"."b"."c"'
não é um valor de caminho válido. Isso se aplica ao parâmetro path nas cláusulas KEEP e SET. - SET
-
Pares path e value para modificar um caminho existente ou adicionar um novo caminho, além de definir o valor desse caminho no objeto de saída.
A cláusula é opcional.
- value1, value2...
-
Expressões resolvidas como valores do tipo SUPER. Os tipos numérico, de texto e booliano podem ser resolvidos como SUPER.
Tipo de retorno
SUPER
Observações de uso
OBJECT_TRANSFORM retorna um objeto do tipo SUPER contendo os valores do caminho de entrada que foram especificados em KEEP e os pares de caminho e valor que foram especificados em SET.
Se KEEP e SET estiverem vazios, OBJECT_TRANSFORM vai retornar entrada.
Se a entrada não for um objeto do tipo SUPER, OBJECT_TRANSFORM retornará a entrada, independentemente de eventuais valores KEEP ou SET.
Exemplo
O exemplo a seguir transforma um objeto SUPER em outro objeto SUPER.
CREATE TABLE employees ( col_person SUPER ); INSERT INTO employees VALUES ( json_parse(' { "name": { "first": "John", "last": "Doe" }, "age": 25, "ssn": "111-22-3333", "company": "Company Inc.", "country": "U.S." } ') ), ( json_parse(' { "name": { "first": "Jane", "last": "Appleseed" }, "age": 34, "ssn": "444-55-7777", "company": "Organization Org.", "country": "Ukraine" } ') ) ; SELECT OBJECT_TRANSFORM( col_person KEEP '"name"."first"', '"age"', '"company"', '"country"' SET '"name"."first"', UPPER(col_person.name.first::TEXT), '"age"', col_person.age + 5, '"company"', 'Amazon' ) AS col_person_transformed FROM employees; --This result is formatted for ease of reading.
col_person_transformed ------------------------------------------------------------- { "name": { "first": "JOHN" }, "age": 30, "company": "Amazon", "country": "U.S." } { "name": { "first": "JANE" }, "age": 39, "company": "Amazon", "country": "Ukraine" }