o problemă frecventă cu importul de date într-o bază de date este spațiu alb nedorit la începutul sau la sfârșitul siruri de caractere.
spațiul alb de conducere și de sfârșit poate cauza probleme atunci când încercați să identificați înregistrări duplicate, încercați să vă alăturați tabelelor pe coloane de șir sau pur și simplu să interogați o anumită valoare.din fericire, funcția SQL TRIM elimină acel spațiu alb plictisitor de conducere și de sfârșit din șiruri de caractere.spațiul alb este un caracter dintr-un șir care reprezintă spațiul orizontal sau vertical în tipografie., Cu alte cuvinte: file, fluxuri de linie, returnări de transport și, da, spații.
un spațiu alb are valoare de caractere, la fel ca „A”, ” B ” și ” C ” au o valoare. Pur și simplu nu putem vedea întotdeauna spațiu alb atunci când este tipărit.și la fel ca orice alt caracter, un spațiu alb are o valoare zecimală în tabelul ASCII. Acest fapt mic vine destul de la îndemână atunci când încercați să identificați un caracter spațiu alb folosind o comandă 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)
.,
cu alte cuvinte, dacă specificați doar target_string
(singurul parametru necesar), toate spațiile de conducere și de sfârșit vor fi tăiate.
Exemplu
Accepta valorile implicite să tăiați ATÂT de conducere și la sfârșit spațiu de caractere:
SELECT ' Hello World ',
TRIM(' Hello World ');+-----------------+-------------------------+
| Hello World | TRIM(' Hello World ') |
+-----------------+-------------------------+
| Hello World | Hello World |
+-----------------+-------------------------+
Notă: funcția TRIM pentru versiunile SQL Server 2016 și inferioare nu au argumente specificarea caracter(e) să TĂIAȚI dintr-un șir. Ei tăiați numai de conducere / la final caractere spațiu.
exemplu
eliminați numai caracterele asterisc (*) de conducere., Observați, chiar dacă un singur ‘ * ‘ este specificat ca parametru, TRIM elimină toate asteriscurile de conducere ( * ), indiferent de câte sunt.
SELECT '*** Hello World **',
TRIM(LEADING '*' FROM '*** Hello World **');+--------------------+---------------------------------------------+
| *** Hello World ** | TRIM(LEADING '*' FROM '*** Hello World **') |
+--------------------+---------------------------------------------+
| *** Hello World ** | Hello World ** |
+--------------------+---------------------------------------------+
Un exemplu de spațiu alb scenariu
Imaginați-vă că doriți pentru a converti magazin de jucării înregistrări de inventar de la foi de calcul pentru un RDBMS baza de date. Încărcați cu succes un tabel de baze de date din foaia de răspândire.,verificați încărcarea comparând foaia de calcul originală cu noua tabelă a bazei de date. Rezultatele arată foarte bine.
Acum vrei pentru a afla cât de multe jucării rațele au mai fost primit, așa că interogarea bazei de date:
SELECT toy_name, COUNT(*)
FROM toys
WHERE toy_name = 'duck'
GROUP BY toy_name;Empty set (0.00 sec)
Stai, ce?! Asta nu poate fi corect, nu sunt returnate înregistrări? Te uiți chiar la masa de jucării din Baza de date, puteți vedea cele 11 înregistrări cu toy_name = ‘duck’.,
Deci, tu a alerga această aplicație la îndemână mic declarație SQL pentru a face spațiu alb vizibile:
Pentru mai multe detalii privind funcția de înlocuire, faceți clic aici.
Ah ha! Acum Puteți vedea că toate numele toy_names au un spațiu principal, iar unele dintre ele au alte caractere spațiale albe.,
Ai rula o serie de UPDATE declarații folosind funcția TRIM pentru conducere și la sfârșit un spațiu alb de caractere: file char(9)
, line-feed-uri char(10)
, transportul revine char(13)
, și spații char(32)
.,
Tu a alerga SELECTAȚI din nou pentru a face spațiu alb vizibile și, ptiu, au plecat cu toții:
Acum poți să-ți numeri rațe cu încredere:
SELECT toy_name, COUNT(*)
FROM toys
WHERE toy_name = 'duck'
GROUP BY toy_name;