sql >> Databáze >  >> RDS >> Oracle

Funkce TRIM() v Oracle

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 SQL SELECT 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ězec null 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') _____________________ null 

Př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čka 

Nesprá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() a LTRIM() 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.


  1. SQL Server SELECT do existující tabulky

  2. Čtenář řešení výzvy Special Islands

  3. Jak pracovat s PGpoint for Geolocation pomocí PostgreSQL?

  4. Jak zkontrolovat zastaralé statistiky