Czyszczenie danych za pomocą SQL-TRIM Your White Space

częstym problemem z importowaniem danych do bazy danych jest niechciana Biała Spacja na początku lub końcu łańcuchów.

początkowe i końcowe białe spacje mogą powodować problemy podczas próby identyfikacji zduplikowanych rekordów, próby połączenia tabel w kolumnach łańcuchowych lub po prostu zapytania o określoną wartość.

na szczęście funkcja SQL TRIM usuwa te brzydkie początkowe i końcowe białe spacje z ciągów.

Biała spacja to znak w łańcuchu znaków, który reprezentuje poziomą lub pionową spację w typografii., Innymi słowy: tabulatory, kanały linii, zwroty karetki i, tak, spacje.

Biała spacja ma wartość znaku, podobnie jak 'A', 'B' I 'C' mają wartość. Po prostu nie zawsze widzimy białą spację po wydrukowaniu.

i tak jak każdy inny znak, Biała spacja ma wartość dziesiętną w tabeli ASCII. Ten mały fakt jest bardzo przydatny, gdy próbujesz zidentyfikować znak białej spacji za pomocą polecenia 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) .,

innymi słowy, jeśli podasz tylko target_string (jedyny wymagany parametr), wszystkie początkowe i końcowe spacje zostaną przycięte.

przykład

Accept domyślnie przycina zarówno znaki początkowe, jak i końcowe:

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

Uwaga: funkcja przycinania dla wersji SQL Server 2016 i niższych nie zawiera argumentów określających znaki do przycinania z łańcucha. Przycinają tylko początkowe / końcowe znaki spacji.

przykład

Usuń tylko wiodące znaki gwiazdki ( * )., Zauważ, że chociaż jako parametr podano tylko jeden’*', TRIM usuwa wszystkie gwiazdki wiodące (*), niezależnie od tego, ile ich jest.

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

przykładowy scenariusz białej przestrzeni

wyobraź sobie, że chcesz przekonwertować rekordy zapasów w sklepie z zabawkami z arkuszy kalkulacyjnych do bazy danych RDBMS. Pomyślnie załadujesz tabelę bazy danych z arkusza kalkulacyjnego.,

sprawdzasz obciążenie porównując oryginalny arkusz kalkulacyjny z nową tabelą bazy danych. Wyniki wyglądają naprawdę dobrze.

teraz chcesz dowiedzieć się, ile kaczek zabawek zostało odebranych, więc odpytywasz bazę danych:

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

czekaj, co?! To nie może być prawda, żadnych akt nie są zwracane? Patrzysz bezpośrednio na tabelę zabawek w bazie danych, możesz zobaczyć 11 rekordów z tagiem zabawka_name = 'kaczka'.,

więc uruchamiasz to poręczne małe polecenie SQL, aby biała spacja była widoczna:

div

aby uzyskać więcej informacji na temat funkcji zamiany, kliknij tutaj.

Ah ha! Teraz możesz zobaczyć, że wszystkie nazwy toy_names mają spację wiodącą, a niektóre z nich mają inne końcowe białe znaki spacji.,

uruchamiasz serię instrukcji UPDATE przy użyciu funkcji TRIM dla początkowych i końcowych znaków spacji: tabs char(9), line-feeds char(10), carriage-returns char(13) I spacje char(32).,

ponownie uruchomić wybierz sprawia, że biała przestrzeń widoczne i UV, wszystkie one zniknęły:

teraz możesz liczyć swoje sprawy z ufnością:

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

Dodaj komentarz

Twój adres email nie zostanie opublikowany. Pola, których wypełnienie jest wymagane, są oznaczone symbolem *