V Oracle, TRIM()
Funkce umožňuje ořezat znaky ze stran řetězce.
Můžete oříznout úvodní znaky, koncové znaky nebo obojí.
Ve výchozím nastavení ořízne prázdné místo, ale volitelně můžete zadat jiný znak nebo znaky, které chcete oříznout.
Syntaxe
Syntaxe vypadá takto:
TRIM([ { { LEADING | TRAILING | BOTH }
[ trim_character ]
| trim_character
}
FROM
]
trim_source
)
Oba trim_character
a trim_source
může být VARCHAR2
nebo jakýkoli datový typ, který lze implicitně převést na VARCHAR2
.
Příklad
Zde je jednoduchý příklad k demonstraci:
SELECT TRIM('.' FROM '...Cat...')
FROM DUAL;
Výsledek:
TRIM('.'FROM'...CAT...') ___________________________ Kočka
V tomto případě zadaný znak (.
) byl odstraněn z obou stran provázku.
Byl odstraněn z obou stran, protože jsem nespecifikoval, ze které strany jej odstranit.
Můžeme získat stejný výsledek, když zahrneme BOTH
klíčové slovo:
SELECT TRIM(BOTH '.' FROM '...Cat...')
FROM DUAL;
Výsledek:
TRIM(BOTH'.'FROM'...CAT...') ________________________________ Kočka
Oříznutí hlavních postav
Tady je to znovu, ale s odstraněnými pouze hlavními znaky:
SELECT TRIM(LEADING '.' FROM '...Cat...')
FROM DUAL;
Výsledek:
TRIM(LEADING'.'FROM'...CAT...') ___________________________________ Kočka...
Oříznout znaky na konci
A tady je to s odstraněnými pouze koncovými znaky:
SELECT TRIM(TRAILING '.' FROM '...Cat...')
FROM DUAL;
Výsledek:
TRIM(TRAILING'.'FROM'...CAT...') ____________________________________ ...Kočka
Výchozí znak
V tomto příkladu neurčuji znak k oříznutí, proto ořízne prázdné místo:
SELECT TRIM(' Cat ')
FROM DUAL;
Výsledek:
TRIM('CAT') ______________ Cat
Při ořezávání mezer z obou stran není tak snadné vidět efekt.
Zde je další příklad, který usnadňuje zjištění, že prázdné místo bylo odstraněno z obou stran:
SELECT
'My' || ' Fat ' || 'Cat',
'My' || TRIM(' Fat ') || 'Cat'
FROM DUAL;
Výsledek:
'MY'||'FAT'||'CAT' 'MY'||TRIM('FAT')||'CAT' ______________________ ____________________________ Moje tlustá kočka MyFatCat
Čísla
Řetězec a trimovací znak může být VARCHAR2
nebo jakýkoli datový typ, který lze implicitně převést na VARCHAR2
, takže můžeme předat číslo jako je následující. Vrácená hodnota je však VARCHAR2
.
SELECT TRIM(LEADING 0 FROM 007)
FROM DUAL;
Výsledek:
TRIM (LEADING0FROM007) _________________________ 7
Tady je to s jiným číslem, které se ořezává:
SELECT TRIM(LEADING 1 FROM 117)
FROM DUAL;
Výsledek:
TRIM (LEADING1FROM117) _________________________ 7
Nulové hodnoty
Pokud je řetězec nebo trim znak null
výsledkem je null
:
SET NULL 'null';
SELECT
TRIM(null FROM '...Cat...'),
TRIM(BOTH FROM null),
TRIM(null FROM null)
FROM DUAL;
Výsledek:
TRIM (NULLFROM'...CAT...') TRIM (BOTHFROMNULL) TRIM (NULLFROMNULL) _____________________________ ______________________ ___________Ve výchozím nastavení vrátí SQLcl a SQL*Plus prázdné místo vždy, když
null
dochází v důsledku SQLSELECT
prohlášení.Můžete však použít
SET NULL
určit jiný řetězec, který má být vrácen. Zde jsem uvedl, že řetězecnull
by měl být vrácen.Oříznutí prázdných řetězců
Předání prázdného řetězce jako znaku trim má za následek
null
:SET NULL 'null'; SELECT TRIM('' FROM ' Cat') FROM DUAL;
Výsledek:
TRIM(''FROM'CAT') _____________________ nullPřidání jediné mezery k prázdnému řetězci to však změní a ořízne všechna prázdná místa z řetězce:
SET NULL 'null'; SELECT TRIM(' ' FROM ' Cat') FROM DUAL;
Výsledek:
TRIM(''FROM'CAT') ____________________ KočkaNesprávný počet argumentů
Volání
TRIM()
bez předání jakýchkoli argumentů vrátí chybu:SELECT TRIM() FROM DUAL;
Výsledek:
Chyba začínající na řádku:1 v příkazu -SELECT TRIM()FROM DUALEchyba na příkazovém řádku:1 Sloupec:13Hlášení o chybě -Chyba SQL:ORA-00936:chybí výraz00936. 00000 - "chybějící výraz"*Příčina:*Akce:A předání nesprávného počtu argumentů má za následek chybu:
SELECT TRIM(' Cat ', 2) FROM DUAL;
Výsledek:
Chyba začínající na řádku:1 v příkazu -SELECT TRIM(' Cat ', 2)FROM DUALError na příkazovém řádku:1 Sloupec:20Hlášení o chybě -Chyba SQL:ORA-00907:chybí pravá závorka00907. 00000 - "chybějící pravá závorka"*Příčina:*Akce:Viz také
RTRIM()
aLTRIM()
pro více cílené funkce pro ořezávání každé strany řetězce. Tyto funkce také umožňují oříznout více znaků z řetězce.