Rengjøring Data med SQL – TRIMME Mellomrom

Et hyppig problem med å importere data til en database som er uønskede mellomrom på begynnelsen eller slutten av strenger.

Ledende og etterfølgende mellomrom kan føre til problemer når du prøver å identifisere dupliserte oppføringer, forsøk å BLI med i tabellene på strengen kolonner, eller rett og slett søke etter en bestemt verdi.

Heldigvis, SQL TRIM-funksjonen fjerner at pesky ledende og etterfølgende mellomrom fra strengene.

Hvit plass er et tegn i en streng som representerer horisontal eller vertikal plass i typografi., Med andre ord: faner, linje-feeder, vognreturer og, ja, mellomrom.

Et mellomrom har karakter verdi, akkurat som ‘A’, ‘B’ og ‘C’ har en verdi. Vi kan bare ikke alltid se hvite plass når de skrives ut.

Og akkurat som alle andre tegn, et mellomrom, har en desimal verdi i ASCII-tabellen. Denne lille faktum kommer i ganske hendig når du prøver å identifisere en hvit mellomrom ved hjelp av en SQL-kommando.,

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) .,

med andre ord, hvis du bare oppgir target_string (den eneste påkrevd parameter), alle ledende og etterfølgende mellomrom vil bli trimmet.

Eksempel

Godta standardinnstillingene for å trimme BÅDE ledende og etterfølgende mellomrom:

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

Merk: TRIM-funksjonen for SQL Server-versjoner 2016 og lavere ikke har argumenter som angir tegn(s) for å TRIMME fra en streng. De bare TRIM ledende/etterfølgende mellomrom.

Eksempel

Fjern kun LEDENDE stjerne (*) tegn., Varsel, selv om bare en ‘*’ er angitt som parameter, TRIM fjerner alle ledende stjerner (*), uavhengig av hvor mange det er.

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

Et eksempel white space scenario

Tenk deg at du ønsker å konvertere dine leketøy butikken inventar poster fra regneark til et RDBMS database. Du klarer å åpne en database tabell fra spre ark.,

Du kontrollere belastningen ved å sammenligne den opprinnelige regneark med nye databasen tabellen. Resultatene ser virkelig bra ut.

Nå ønsker du å finne ut hvor mange leketøy ender som noensinne har blitt mottatt, så du søke i databasen:

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

Vent, hva?! Det kan ikke være riktig, ingen poster returneres? Du ser rett på de LEKER tabell i databasen, kan du se den 11 poster med toy_name = ‘and’.,

Så du kjøre denne hendige lille SQL-setningen for å gjøre hvite partier:

For mer om ERSTATT-funksjonen, klikker du her.

Ah-ha! Nå kan du se alle toy_names ha en sentral plass, og noen av dem har andre etterfølgende mellomrom-tegn.,

Du kjøre en serie av OPPDATERINGEN uttrykk ved hjelp av TRIM-funksjonen for ledende og etterfølgende mellomrom, tegn: faner char(9), linje-feeds char(10), transport-returnerer char(13), og mellomrom char(32).,

Du kjører VELGER igjen å gjør hvite partier og, puh, de er alle borte:

Nå kan du telle dine ender med tillit:

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

Legg igjen en kommentar

Din e-postadresse vil ikke bli publisert. Obligatoriske felt er merket med *