20th Jul 2022 Tempo di lettura: 5 minuti Come rimuovere i caratteri indesiderati in SQL Ignacio L. Bisso errori comuni in sql qualità dei dati come fare in sql Nozioni di base di SQL Indice L'importanza di standardizzare le stringhe nel database Risoluzione dei problemi con le funzioni stringa SQL Funzioni SQL per la rimozione dei caratteri invisibili e indesiderati Stringhe potenti: Funzioni stringa SQL annidate Per saperne di più sulle funzioni stringa di 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! Tags: errori comuni in sql qualità dei dati come fare in sql Nozioni di base di SQL