Pulizia dei dati con SQL – RITAGLIA lo spazio bianco

Un problema frequente con l’importazione di dati in un database è lo spazio bianco indesiderato all’inizio o alla fine delle stringhe.

Lo spazio bianco iniziale e finale può causare problemi quando si tenta di identificare record duplicati, tentare di UNIRE tabelle su colonne stringa o semplicemente eseguire query per un particolare valore.

Fortunatamente, la funzione SQL TRIM rimuove quel fastidioso spazio bianco iniziale e finale dalle stringhe.

Lo spazio bianco è un carattere in una stringa che rappresenta lo spazio orizzontale o verticale in tipografia., In altre parole: schede, feed di riga, ritorni a capo e, sì, spazi.

Uno spazio bianco ha un valore di carattere, proprio come ‘A’, ‘B’ e ‘C’ hanno un valore. Non possiamo sempre vedere lo spazio bianco quando viene stampato.

E proprio come qualsiasi altro carattere, uno spazio bianco ha un valore decimale nella tabella ASCII. Questo piccolo fatto è molto utile quando si sta tentando di identificare un carattere di spazio bianco utilizzando un comando SQL.,

The TRIM Function

Safari Books online has a nice snippet on the TRIM command:

ANSI SQL Standard Syntax

TRIM( FROM ]
target_string
)

The default for the first parameter, LEADING | TRAILING | BOTH , is ‘BOTH’.

The default for is a space char(32) .,

In altre parole, se si specifica solo target_string (l’unico parametro richiesto), tutti gli spazi iniziali e finali verranno tagliati.

Esempio

Accetta i valori predefiniti per tagliare SIA i caratteri iniziali che finali dello spazio:

SELECT ' Hello World ', 
TRIM(' Hello World ');+-----------------+-------------------------+
| Hello World | TRIM(' Hello World ') |
+-----------------+-------------------------+
| Hello World | Hello World |
+-----------------+-------------------------+

Nota: la funzione TRIM per le versioni di SQL Server 2016 e successive non ha argomenti che specificano i caratteri da TAGLIARE da una stringa. TAGLIANO solo i caratteri di spazio iniziali/finali.

Esempio

Rimuovi solo i caratteri INIZIALI dell’asterisco ( * )., Si noti, anche se solo un ’ * ‘ è specificato come parametro, TRIM rimuove tutti gli asterischi iniziali ( * ), indipendentemente da quanti ce ne sono.

SELECT '*** Hello World **',
TRIM(LEADING '*' FROM '*** Hello World **');+--------------------+---------------------------------------------+
| *** Hello World ** | TRIM(LEADING '*' FROM '*** Hello World **') |
+--------------------+---------------------------------------------+
| *** Hello World ** | Hello World ** |
+--------------------+---------------------------------------------+

Un esempio lo spazio bianco scenario

Immaginate che si desidera convertire il vostro negozio di giocattoli, i record di inventario da fogli di calcolo di un database RDBMS. Caricare correttamente una tabella di database dal foglio di calcolo.,

Si verifica il carico confrontando il foglio di calcolo originale con la nuova tabella del database. I risultati sembrano davvero buoni.

Ora volete scoprire quante giocattolo anatre siano mai stati ricevuti, in modo che la query di database:

SELECT toy_name, COUNT(*)
FROM toys
WHERE toy_name = 'duck'
GROUP BY toy_name;Empty set (0.00 sec)

aspetta, cosa?! Che non può essere giusto, nessun record vengono restituiti? Stai guardando il tavolo dei GIOCATTOLI nel database, puoi vedere i record 11 con toy_name = ‘duck’.,

si esegue questo piccolo istruzione SQL per fare spazio bianco visibile:

Per ulteriori informazioni sulla funzione REPLACE, fare clic qui.

Ah ah! Ora puoi vedere tutti i toy_names hanno uno spazio iniziale e alcuni di essi hanno altri caratteri di spazio bianco finali.,

eseguire una serie di istruzioni di AGGIORNAMENTO utilizzando la funzione TRIM iniziale e finale spazio bianco di caratteri: schede char(9) line-feed char(10), trasporto-restituisce char(13) e spazi char(32).,

eseguire la SELEZIONARE di nuovo a rende visibili spazi e, wow, sono sparite tutte:

Ora è possibile contare il numero di anatre con fiducia:

SELECT toy_name, COUNT(*)
FROM toys
WHERE toy_name = 'duck'
GROUP BY toy_name;

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *