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é –
BOTHve výchozím nastavení). - Znak, který chcete z řetězce oříznout.
FROMklíč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“ |