Función LOWER_ATTRIBUTE_NAMES - Amazon Redshift

Función LOWER_ATTRIBUTE_NAMES

Convierte todos los nombres de atributos aplicables de un valor SUPER a minúsculas, con la misma rutina de conversión de mayúsculas y minúsculas que Función LOWER. LOWER_ATTRIBUTE_NAMES admite caracteres multibyte UTF-8 de hasta un máximo de cuatro bytes por carácter.

Para convertir los nombres del atributo SUPER a mayúsculas, use Función UPPER_ATTRIBUTE_NAMES.

Sintaxis

LOWER_ATTRIBUTE_NAMES(super_expression)

Argumentos

super_expression

Una expresión SUPER.

Tipo de retorno

SUPER

Notas de uso

En Amazon Redshift, los identificadores de columna tradicionalmente no distinguen entre mayúsculas y minúsculas y se convierten a minúsculas. Si ingiere datos de formatos de datos que distinguen mayúsculas de minúsculas, como JSON, es posible que los datos contengan nombres de atributos con mayúsculas y minúsculas.

Considere el siguiente ejemplo.

CREATE TABLE t1 (s) AS SELECT JSON_PARSE('{"AttributeName": "Value"}'); SELECT s.AttributeName FROM t1; attributename ------------- NULL SELECT s."AttributeName" FROM t1; attributename ------------- NULL

Amazon Redshift devuelve un valor NULL para ambas consultas. Para realizar consultas de AttributeName, utilice LOWER_ATTRIBUTE_NAMES para convertir los nombres de los atributos de los datos a minúsculas. Considere el siguiente ejemplo.

CREATE TABLE t2 (s) AS SELECT LOWER_ATTRIBUTE_NAMES(s) FROM t1; SELECT s.attributename FROM t2; attributename ------------- "Value" SELECT s.AttributeName FROM t2; attributename ------------- "Value" SELECT s."attributename" FROM t2; attributename ------------- "Value" SELECT s."AttributeName" FROM t2; attributename ------------- "Value"

Una opción relacionada para trabajar con nombres de atributos de objetos en mayúsculas y minúsculas es la opción de configuración enable_case_sensitive_super_attribute, que permite a Amazon Redshift reconocer mayúsculas y minúsculas en los nombres de atributo SUPER. Esta puede ser una solución alternativa al uso de LOWER_ATTRIBUTE_NAMES. Para obtener más información sobre enable_case_sensitive_super_attribute, diríjase a enable_case_sensitive_super_attribute.

Ejemplos

Conversión de los nombres de los atributos SUPER a minúsculas

En el siguiente ejemplo, se utiliza LOWER_ATTRIBUTE_NAMES para convertir los nombres de los atributos de todos los valores SUPER de una tabla.

-- Create a table and insert several SUPER values. CREATE TABLE t (i INT, s SUPER); INSERT INTO t VALUES (1, NULL), (2, 'A'::SUPER), (3, JSON_PARSE('{"AttributeName": "B"}')), (4, JSON_PARSE( '[{"Subobject": {"C": "C"}, "Subarray": [{"D": "D"}, "E"] }]')); -- Convert all attribute names to lowercase. UPDATE t SET s = LOWER_ATTRIBUTE_NAMES(s); SELECT i, s FROM t ORDER BY i; i | s ---+-------------------------------------------------- 1 | NULL 2 | "A" 3 | {"attributename":"B"} 4 | [{"subobject":{"c":"C"},"subarray":[{"d":"D"}, "E"]}]

Observe cómo funciona LOWER_ATTRIBUTE_NAMES.

  • Los valores NULL y los valores escalares SUPER como "A" permanecen inalterados.

  • En un objeto SUPER, todos los nombres de los atributos se cambian a minúsculas, pero los valores de los atributos, como "B", permanecen inalterados.

  • LOWER_ATTRIBUTE_NAMES se aplica de forma recursiva a cualquier objeto SUPER que esté anidado dentro de una matriz SUPER o dentro de otro objeto.

Uso de LOWER_ATTRIBUTE_NAMES en un objeto SUPER con nombres de atributos duplicados

Si un objeto SUPER contiene atributos cuyos nombres solo difieren en las mayúsculas y minúsculas, LOWER_ATTRIBUTE_NAMES generará un error. Considere el siguiente ejemplo.

SELECT LOWER_ATTRIBUTE_NAMES(JSON_PARSE('{"A": "A", "a": "a"}')); error: Invalid input code: 8001 context: SUPER value has duplicate attributes after case conversion.