častým problémem při importu dat do databáze je nežádoucí bílý prostor na začátku nebo na konci řetězce.
vedoucí a koncový bílý prostor může způsobit problémy při pokusu o identifikaci duplicitních záznamů, pokus o připojení tabulek na sloupcích řetězců nebo jednoduše dotaz na určitou hodnotu.
naštěstí funkce SQL TRIM odstraní tento otravný vedoucí a koncový bílý prostor z řetězců.
bílý prostor je znak v řetězci, který představuje horizontální nebo vertikální prostor v typografii., Jinými slovy: karty, linkové kanály, vrácení vozíku a ano mezery.
bílý prostor má hodnotu znaku, stejně jako „A“, “ B “ A “ C “ mají hodnotu. Jen nemůžeme vždy vidět bílý prostor při tisku.
a stejně jako jakýkoli jiný znak má bílé místo v tabulce ASCII desetinnou hodnotu. Tato malá skutečnost se hodí, když se snažíte identifikovat znak bílého prostoru pomocí příkazu 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)
.,
jinými slovy, pokud zadáte pouze target_string
(jediný povinný parametr), všechny úvodní a koncové mezery se ořízne.
Příklad:
Přijmout výchozí nastavení trim úvodní a koncové mezery:
SELECT ' Hello World ',
TRIM(' Hello World ');+-----------------+-------------------------+
| Hello World | TRIM(' Hello World ') |
+-----------------+-------------------------+
| Hello World | Hello World |
+-----------------+-------------------------+
Poznámka: funkce TRIM pro SQL Server verze 2016 a nižší nemají argumenty určující znak(y) ČALOUNĚNÍ z řetězce. Ořezávají pouze přední / koncové znaky prostoru.
příklad
odstraňte pouze hlavní znaky hvězdičky ( * )., Všimněte si, že i když je jako parametr zadán pouze jeden’*‘, TRIM odstraní všechny přední hvězdičky ( * ), bez ohledu na to, kolik jich je.
SELECT '*** Hello World **',
TRIM(LEADING '*' FROM '*** Hello World **');+--------------------+---------------------------------------------+
| *** Hello World ** | TRIM(LEADING '*' FROM '*** Hello World **') |
+--------------------+---------------------------------------------+
| *** Hello World ** | Hello World ** |
+--------------------+---------------------------------------------+
příklad white space scénář
Představte si, že chcete převést vaše hračkářství zásob záznamy z tabulek RDBMS databáze. Úspěšně načtete databázovou tabulku z rozloženého listu.,
zatížení ověřujete porovnáním původní tabulky s novou databázovou tabulkou. Výsledky vypadají opravdu dobře.
Nyní chcete zjistit, kolik hračky kachny, kdy byla přijata, takže můžete zadat dotaz do databáze:
SELECT toy_name, COUNT(*)
FROM toys
WHERE toy_name = 'duck'
GROUP BY toy_name;Empty set (0.00 sec)
Počkejte, co?! To nemůže být pravda, žádné záznamy nejsou vráceny? Díváte se přímo na tabulku hraček v databázi, můžete vidět 11 záznamů s toy_name = ‚duck‘.,
Takže jste se spustit tento šikovný malý SQL příkaz, aby se bílá místa viditelné:
Pro více informací o nahrazování funkce, klikněte zde.
ah ha! Nyní můžete vidět, že všechny názvy toy_names mají vedoucí prostor a některé z nich mají jiné znaky bílého prostoru.,
spustit sérii příkazy UPDATE pomocí funkce TRIM pro úvodní a koncové bílé znaky: záložky char(9)
, line-kanály char(10)
, přepravy, vrátí char(13)
a mezery char(32)
.,
spuštění VYBERTE znovu dělá bílé místo viditelné a, uf, všichni jsou pryč:
Nyní můžete počítat své kachny s důvěrou:
SELECT toy_name, COUNT(*)
FROM toys
WHERE toy_name = 'duck'
GROUP BY toy_name;