Problém:
Chcete odstranit konkrétní znaky ze začátku a konce řetězce.
Příklad:
Naše databáze obsahuje tabulku s názvem post
s údaji ve dvou sloupcích:id
a title
.
id | title |
---|---|
1 | ' Novinky o psech' |
3 | 'Eurovize 2019' |
4 | 'Nové politické klima' |
Ořízněte název každého příspěvku, abychom odstranili zbytečnou mezeru na začátku a konci.
Řešení:
Použijeme TRIM
funkce. Zde je dotaz, který byste napsali:
SELECT TRIM( BOTH ' ' FROM title ) as new_title FROM post;
Případně můžete použít kratší verzi bez BOTH
klíčové slovo; ve výchozím nastavení TRIM
bude to považovat za OBOU operaci.
SELECT TRIM(' ' FROM title ) as new_title FROM post;
Zde je výsledek obou dotazů:
new_title |
---|
„Novinky o psech“ |
„Eurovize 2019“ |
„Nové politické klima“ |
Diskuse:
Použijte TRIM
funkce, pokud chcete oříznout řetězec v tabulce. Tato funkce umožňuje odstranit určitý znak ze začátku nebo konce řetězce nebo z obou konců. Tato funkce má následující argumenty:
- Klíčové slovo určující konce, ze kterých se mají oříznout (volitelné –
BOTH
ve výchozím nastavení). - Znak, který chcete z řetězce oříznout.
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( BOTH ' ' FROM title )
Jak je uvedeno výše, TRIM
může vzít jako svůj první argument jiná klíčová slova. Kromě ořezávání z obou konců nám umožňuje odstranit znak pouze z konce řetězce nebo pouze od začátku:
TRAILING
(odstranit z konce)LEADING
(odstranit od začátku)
Níže uvedený příklad odstraňuje mezeru na konci každého titulu (ale stejně dobře by se dal použít k oříznutí mezery na začátku, pokud použijete LEADING
místo toho klíčové slovo):
SELECT TRIM( TRAILING ' ' FROM title ) as new_title FROM post;
Dotaz vrátí title
sloupec bez mezery na konci. Všimněte si, že mezery na začátku zůstávají nedotčené.
new_title |
---|
‘Novinky o psech‘ |
„Eurovize 2019“ |
„Nové politické klima“ |