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

Come rimuovere i caratteri indesiderati in SQL

I caratteri indesiderati nei dati di testo possono essere un po' fastidiosi, ma c'è un modo semplice per risolverli. Scorrete in basso per scoprire come rimuovere i caratteri indesiderati in SQL nel modo più semplice!

A volte capita di trovare caratteri indesiderati nei dati delle stringhe perché le query SQL non funzionano come previsto. Inoltre, a volte questi caratteri extra possono essere invisibili, il che complica davvero le cose. In questo articolo esamineremo alcune funzioni SQL relative alle stringhe che possono gestire i caratteri indesiderati, visibili o meno!

L'importanza di standardizzare le stringhe nel database

Quando lavoriamo con dati popolati o caricati come testo libero, la qualità dei dati è spesso piuttosto scarsa. I caratteri indesiderati possono compromettere seriamente la qualità dei dati e rendere più difficile l'analisi delle informazioni raccolte. È quindi importante capire come utilizzare le funzioni stringa di SQL per risolvere questi problemi comuni e ripulire il database.

Come rimuovere i caratteri indesiderati in SQL? Iniziamo ad esplorare le funzioni SQL trim e length.

Risoluzione dei problemi con le funzioni stringa SQL

Per spiegare come risolvere i problemi con i caratteri indesiderati, lavoreremo con un semplice database sanitario. Immaginiamo di avere un medico che memorizza tutti i dati dei suoi pazienti in un'unica tabella. La tabella contiene il nome completo del paziente, la data della visita, la diagnosi del medico, il trattamento suggerito ed eventuali farmaci prescritti.

Ogni volta che un paziente visita il suo studio, il medico crea un nuovo record. Egli scrive manualmente le sue note nel database, quindi la qualità dei dati è occasionalmente scarsa.

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”

Funzioni SQL per la rimozione dei caratteri invisibili e indesiderati

In alcuni casi, una stringa di testo può contenere caratteri indesiderati, come spazi vuoti, virgolette, virgole o persino i separatori "|". Questi possono trovarsi su uno o entrambi i lati della stringa. Per rimuovere questi caratteri indesiderati si possono utilizzare le funzioni SQL TRIM, SQL LTRIM e SQL RTRIM. Le funzioni sono molto simili e sono spiegate nella tabella seguente:

Function Parameters Behavior
LTRIM A string and a specific character Removes the specified character from the left side only
RTRIM A string and a specific character Removes the specified character from the right side only
TRIM A string and a specific character Removes the specified character from both sides

Proviamo queste funzioni, iniziando da LENGTH. Come rimuovere i caratteri indesiderati in SQL utilizzando queste funzioni?

Se si esamina la tabella originale, si noterà che alcune voci della colonna diagnostica presentano alcuni caratteri indesiderati, come spazi inutili all'inizio. Ma ci sono anche alcuni spazi nascosti dopo ogni voce. Per risolvere questo problema, cominceremo a contare il numero di caratteri nelle stringhe di diagnosi usando la funzione LENGTH. Poiché gli spazi vuoti non sono caratteri visibili, usiamo le parentesi angolari per mostrare dove si trovano gli spazi extra (se ce ne sono).

Vediamo come funziona la funzione SQL LENGTH in questa query:

SELECT 	diagnostic as real_diagnostic,
	 	length(diagnostic) as field_length,
		'<' || diagnostic || '>' as delimited_diagnostic
FROM patient_data 
real_diagnostic field_length delimited_diagnostic
Flu 3 <Flu>
Food Poisoning 14 <Food Poisoning>
flu 4 < flu>
Food Poisoned 15 < Food Poisoned>
angina 6 <angina>
Flu 4 < Flu>

Possiamo notare che diversi record presentano caratteri indesiderati, cioè spazi non necessari. Per " flu", la lunghezza è 4 invece di 3 e il campo delimitato mostra uno spazio vuoto all'inizio. Una query appropriata risolverà questo problema e rimuoverà gli spazi inutili. Procediamo subito a farlo!

SELECT	diagnostic as real_diagnostic, 	
		trim(diagnostic) as trimmed_diagnostic
FROM patient_data 
real_diagnostic trimmed_diagnostic
Flu Flu
Food Poisoning Food Poisoning
flu flu
Food Poisoned Food Poisoned
angina angina
Flu Flu

Stringhe potenti: Funzioni stringa SQL annidate

Supponiamo che il nostro medico voglia sapere quanti pazienti sono stati diagnosticati con ciascuna delle malattie della colonna diagnostic. Per ottenere questa informazione, utilizziamo la seguente query:

SELECT diagnostic, count(*)
FROM  patient_data
GROUP BY diagnostic
diagnostic count(*)
Flu 1
Food Poisoning 1
flu 1
food poisoning 1
angina 1
Flu 1

Come si può vedere, il risultato non è quello atteso. La stessa malattia compare più volte perché il medico non è stato coerente con la sua digitazione. Una diagnosi di influenza viene visualizzata come "influenza", "influenza" e "influenza". Sappiamo che sono la stessa cosa, ma il motore del database li vede come tre cose diverse.

Abbiamo le competenze per correggere questa query e ottenere il risultato desiderato. Possiamo usare la stessa espressione annidata per eliminare i caratteri indesiderati (spazi extra) ed eliminare gli errori di capitalizzazione. Ecco come si presenta:

SELECT lower(trim(diagnostic)), count(*)
FROM  patient_data
GROUP BY lower(trim(diagnostic))
diagnostic count(*)
flu 3
food poisoning 2
angina 1

Nella programmazione è molto comune annidare le funzioni, ovvero chiamare una funzione dall'interno di un'altra funzione per utilizzarla come parametro. Questo è ciò che abbiamo fatto nell'esempio precedente.

Per saperne di più sulle funzioni stringa di SQL

In questo articolo abbiamo trattato le importanti funzioni di stringa SQL TRIM e LENGTH per imparare a rimuovere i caratteri indesiderati in SQL. Se si desidera rilevare i caratteri nascosti o indesiderati come parte di una diagnosi iniziale, utilizzare LENGTH. Quindi, utilizzate TRIM per eliminare i caratteri indesiderati. Abbiamo anche discusso di come sia possibile annidare le funzioni SQL, una tecnica potente nella programmazione.

Se volete saperne di più sulle funzioni stringa SQL, date un'occhiata al nostro corso Standard SQL Functions . Provatelo gratuitamente oggi stesso!