Arrays y seriessolo PostgreSQL

STRING_TO_ARRAY

Divide una cadena por un separador en un array de partes.

Sintaxis

STRING_TO_ARRAY(<texto>, <separador>)
STRING_TO_ARRAY(<texto>, <separador>, <texto para NULL>)

Como SPLIT_PART, pero devuelve todas las partes a la vez, como un array. Después se trabaja con él como con una lista: se toma un elemento por su número, se cuentan los elementos con CARDINALITY o se despliegan en filas con UNNEST.

Datos para los ejemplos

employees

namedepartmentsalarybonusphone
Emmabackend1200300+44 7700 900123
Liambackend1000NULLNULL
Oliviafrontend1350150+44 7700 900456
Noahfrontend950NULL+44 7700 900789
Sophiadesign1200200NULL

Estas tablas ya están creadas en el entorno de pruebas y los ejemplos de abajo las usan. ¿Quieres repetirlo en tu propia base de datos? Copia el SQL.

Una cadena convertida en array
SELECT STRING_TO_ARRAY('sql,postgres,database', ',') AS tags;
tags
["sql","postgres","database"]
Un elemento por su número, y la cantidad
SELECT (STRING_TO_ARRAY('sql,postgres,database', ','))[2] AS second_tag,
CARDINALITY(STRING_TO_ARRAY('sql,postgres,database', ',')) AS tag_count;
second_tagtag_count
postgres3
Las partes de un teléfono
SELECT name,
STRING_TO_ARRAY(phone, ' ') AS phone_parts
FROM employees;
namephone_parts
Emma["+44","7700","900123"]
LiamNULL
Olivia["+44","7700","900456"]
Noah["+44","7700","900789"]
SophiaNULL

Ten en cuenta

Los espacios junto al separador se quedan en las partes: STRING_TO_ARRAY('a, b', ',') da a y b. Usa ', ' como separador y obtendrás a y b.

Una cadena vacía da un array vacío, y NULL da NULL.

El tercer argumento indica qué texto se considera NULL: STRING_TO_ARRAY('a,,b', ',', '') da el array a, NULL, b.

Funciones relacionadas