Volver a la lista de artículos Artículos
Lectura de 3 minutos

Extracción de datos de una cadena: SPLIT_PART en PostgreSQL

Aprenda a utilizar split_part en PostgreSQL para extraer datos de cadenas.

Muy a menudo, nos gustaría extraer partes de una cadena cuando trabajamos con valores de texto. Un ejemplo común es cuando tenemos un nombre completo y necesitamos recuperar sólo el apellido. En este artículo, examinaremos cómo hacerlo utilizando split_part en PostgreSQL, es decir, una función relacionada con las cadenas que puede utilizarse para extraer una subcadena.

¿Por qué utilizar funciones de cadena en su base de datos?

Hay muchas razones por las que querría usar funciones de cadena SQL como split_part en PostgreSQL en su base de datos, pero la razón principal es abordar problemas comunes de calidad de datos. En otro artículo titulado "Cómo lidiar con caracteres no deseados en SQL", echamos un vistazo a cómo las funciones de cadena SQL comunes pueden ayudarnos a controlar la calidad de nuestros datos. En este artículo, nos centraremos principalmente en la extracción de partes de una cadena para su posterior análisis.

Para una mejor comprensión, trabajaremos con una tabla con datos sanitarios de ejemplo creada por un médico que almacena toda la información de sus pacientes en esta única tabla. La tabla contiene el nombre completo del paciente, la fecha de su visita, el diagnóstico del médico, el tratamiento que éste sugirió y los medicamentos que le recetó.

Cada vez que un paciente visita su consulta, el médico crea un nuevo registro y escribe manualmente sus notas en la base de datos. Nos centraremos principalmente en la columna drugs_in_receipt. Si echamos un vistazo a la base de datos de abajo, podemos ver una lista de medicamentos separados por comas bajo esa columna.

Full_Name date diagnostic treatment Drugs_in_receipt
John Smith ’03/04/2016′ Flu rest “aspirin, paracetamol”
Mary Deep ’10/11/2016′ Food Poisoning Rest & diet “penicillin,paracetamol”
Agnes Jason ’03/12/2016′ flu rest “aspirin, paracetamol”
Johnny SMITH ’15/03/2017′ Food Poisoned Rest & diet “penicillin,paracetamol”
AGNES Jason ’19/072017′ angina Rest and don’t speak “amoxicillin”
Peter Duckerz ’10/10/2017′ Flu Rest “paracetamol”

Extracción de una subcadena de una cadena con PostgreSQL SPLIT_PART

Supongamos que el primer fármaco de cada lista es el principal que deberá tomar el paciente, y nuestro médico quiere extraer el fármaco principal de cada lista bajo la columna drugs_in_receipt. Este campo almacena la lista de medicamentos prescritos por el médico para cada caso. Como ya hemos mencionado, los nombres de estos medicamentos están separados por comas, como "aspirina, paracetamol".

Utilizaremos la función de PostgreSQL split_part para extraer sólo el primer nombre de medicamento de cada registro. Esta es la consulta que utilizaremos:

SELECT split_part(drugs_in_receipt, ',',1) as first_medicine
FROM  patient_data

La función de PostgreSQL split_part toma tres argumentos. El primero es el nombre del campo, en este caso, drugs_in_receipt. El segundo argumento es el delimitador (una coma), y el tercero es la posición del elemento deseado. En nuestro ejemplo, queremos el primer elemento de la lista, así que pasamos 1 como tercer argumento.

first_medicine
“aspirin
“penicillin
“aspirin
“penicillin
“amoxicillin”
“paracetamol”

Si observamos detenidamente el resultado, podemos ver una comilla doble de apertura antes de cada nombre de medicamento. ¿Cómo podemos eliminar esto? En uno de nuestros otros artículos, aprendimos a utilizar la función TRIM de SQL para eliminar los caracteres no deseados. Para nuestro propósito, especificaremos lo que queremos que trim elimine: las comillas dobles.

SELECT trim( split_part( drugs_in_receipt , ',' , 1) , ' “” ')
FROM  patient_data
first_medicine
aspirin
penicillin
aspirin
penicillin
amoxicillin
paracetamol

Ya está. Ha sido muy fácil, ¿verdad?

Aprenda más sobre las funciones de cadena SQL

La función de PostgreSQL split_part es una de las herramientas más importantes para manipular entradas de cadena en su base de datos. Pero es sólo una entre muchas otras funciones útiles que debe aprender si planea dominar SQL. Para ello, asegúrese de consultar nuestro Funciones estándar de SQL curso. Pruébalo gratis hoy mismo.