Torna all'elenco degli articoli Articoli
Tempo di lettura: 3 minuti

Estrazione di dati da una stringa: SPLIT_PART in PostgreSQL

Imparate a usare split_part in PostgreSQL per estrarre i dati dalle stringhe.

Molto spesso, quando si lavora con valori di testo, si desidera estrarre parti di una stringa. Un esempio comune è quando abbiamo un nome completo e dobbiamo recuperare solo il cognome. In questo articolo esamineremo come farlo utilizzando split_part in PostgreSQL, ovvero una funzione legata alle stringhe che può essere utilizzata per estrarre una sottostringa.

Perché usare le funzioni stringa nel database?

Ci sono molti motivi per utilizzare nel database funzioni stringa SQL come split_part in PostgreSQL, ma il motivo principale è quello di risolvere i problemi comuni di qualità dei dati. In un altro articolo intitolato "Come gestire i caratteri indesiderati in SQL", abbiamo visto come le comuni funzioni stringa SQL possono aiutarci a controllare la qualità dei nostri dati. In questo articolo ci concentreremo principalmente sull'estrazione di parti di una stringa per ulteriori analisi.

Per una migliore comprensione, lavoreremo con una tabella di dati sanitari di esempio creata da un medico che memorizza tutte le informazioni sui suoi pazienti in questa singola tabella. La tabella contiene il nome completo del paziente, la data della visita, la diagnosi del medico, il trattamento suggerito dal medico e i farmaci prescritti dal medico.

Ogni volta che un paziente visita il suo studio, il medico crea un nuovo record e inserisce manualmente le sue note nel database. Ci concentreremo principalmente sulla colonna drugs_in_receipt. Se guardiamo il database qui sotto, possiamo vedere un elenco di farmaci separati da virgole sotto questa colonna.

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”

Estrazione di una sottostringa da una stringa con PostgreSQL SPLIT_PART

Supponiamo che il primo farmaco di ogni elenco sia il farmaco principale che il paziente dovrà assumere e che il nostro medico voglia estrarre il farmaco principale da ogni elenco sotto la colonna drugs_in_receipt. Questo campo memorizza un elenco di farmaci prescritti dal medico per ogni caso. Come abbiamo già detto, i nomi dei farmaci sono separati da virgole, come "aspirina, paracetamolo".

Utilizzeremo la funzione PostgreSQL split_part per estrarre solo il primo nome di farmaco da ogni record. Ecco la query che utilizzeremo:

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

La funzione PostgreSQL split_part richiede tre argomenti. Il primo è il nome del campo, in questo caso drugs_in_receipt. Il secondo argomento è il delimitatore (una virgola) e il terzo è la posizione dell'elemento desiderato. Nel nostro esempio, vogliamo il primo elemento dell'elenco, quindi passiamo 1 come terzo argomento.

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

Se osserviamo attentamente il risultato, possiamo notare una doppia virgola di apertura prima di ogni nome di farmaco. Come possiamo rimuoverlo? In un altro articolo abbiamo appreso come sia possibile utilizzare la funzione SQL TRIM per rimuovere i caratteri indesiderati. Per i nostri scopi, specificheremo ciò che vogliamo che trim rimuova: le doppie virgolette.

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

Ecco! È stato piuttosto facile, vero?

Per saperne di più sulle funzioni stringa SQL

La funzione PostgreSQL split_part è uno degli strumenti più importanti per manipolare le stringhe nel database. Ma è solo una delle tante funzioni utili che dovreste imparare se intendete padroneggiare l'SQL. A tal fine, è opportuno dare un'occhiata al nostro Standard SQL Functions corso. Provatelo gratuitamente oggi stesso!