Problém:
Chcete odstranit mezery nebo konkrétní znaky ze začátku a konce řetězce.
Příklad:
Naše databáze obsahuje tabulku s názvem company
s údaji ve dvou sloupcích:id
a name
.
id | jméno |
---|---|
1 | ' Super Market ' |
2 | 'Zelený obchod' |
3 | 'Moderní knihkupectví' |
Upravme název každé společnosti, abychom odstranili zbytečné místo na začátku a konci.
Řešení:
Použijeme TRIM
funkce. Zde je dotaz, který byste napsali:
SELECT TRIM(' ' FROM name) AS new_name FROM company;
Případně můžete použít kratší verzi bez FROM
klíčové slovo a mezera jako znaky k odstranění; ve výchozím nastavení TRIM
bude to považovat za odstranění mezer z řetězce uloženého v daném sloupci nebo výrazu v argumentu funkce TRIM.
SELECT TRIM(name) AS new_name FROM company;
Zde je výsledek obou dotazů:
new_name |
---|
'Super trh' |
'Zelený obchod' |
'Moderní knihkupectví' |
Diskuse:
Použijte TRIM
Pokud chcete oříznout řetězec v tabulce. Tato funkce umožňuje odstranit určitý znak ze začátku a konce řetězce. Tato funkce má následující argumenty:
- Znak, který chcete z řetězce oříznout, ve výchozím nastavení je to mezera..
FROM
klíčové slovo a za ním název sloupce řetězce, který má být oříznut.
V našem příkladu to vypadá takto:
TRIM(' ' FROM name)
T-SQL umožňuje také odstranit mezeru jiných znaků pouze ze začátku nebo pouze z konce řetězce.
Níže uvedený příklad odstraňuje mezeru na konci každé společnosti pomocí funkce RTRIM().
SELECT RTRIM(name) AS new_name FROM company;
new_name |
---|
'Super trh' |
'Zelený obchod' |
'Moderní knihkupectví' |
Ale stejně dobře by se dal použít k oříznutí místa na začátku, pokud použijete LTRIM
funkce místo toho:
SELECT LTRIM(name) AS new_name FROM company;
Dotaz vrátí name
sloupec bez mezery na konci. Všimněte si, že mezery na začátku zůstávají nedotčené.
new_name |
---|
'Super Market' |
'Zelený obchod' |
'Moderní knihkupectví' |