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

Funkce RTRIM() v Oracle

V Oracle, RTRIM() funkce umožňuje oříznout pravou část řetězce. 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:

RTRIM(char [, set ]) 

Kde char a set může být libovolný z datových typů CHAR , VARCHAR2 , NCHAR , NVARCHAR2 , CLOB nebo NCLOB .

RTRIM odstraní z pravého konce char všechny znaky obsažené v set . Pokud nezadáte set , pak se jako výchozí použije jedna mezera.

Příklad

Zde je příklad:

SELECT RTRIM('Cat                 ')
FROM DUAL; 

Výsledek:

 RTRIM('CAT') ________________ Cat 

Zde jsem nespecifikoval, které znaky se mají oříznout, a tak byla každá jednotlivá mezera oříznuta z pravé části řetězce.

Není snadné vidět účinek výše uvedeného příkladu.

Zde je další příklad, kdy je řetězec zřetězen s jiným řetězcem, zatímco se porovnává výstup s původním (neoříznutým) řetězcem:

SELECT 'Cat     ' || 'Food'
FROM DUAL
UNION ALL
SELECT RTRIM('Cat     ') || 'Food'
FROM DUAL; 

Výsledek:

 'CAT'||'FOOD' _________________ Krmivo pro kočky 

Zadejte znak

V tomto příkladu specifikuji znak, který se má oříznout. Díky tomu je snazší vidět efekt:

SELECT RTRIM('...Cat...', '.')
FROM DUAL; 

Výsledek:

 RTRIM('...CAT...','.') __________________________ ...Cat 

Takže můžeme vidět, že postava byla oříznuta z pravé strany, ale ne z levé strany. Chcete-li oříznout levou stranu, použijte LTRIM() nebo TRIM() .

Všimněte si, že RTRIM() pouze ořízne postavu/y v sadě, dokud nebude postava, která v sadě není. Zde je příklad toho, co mám na mysli:

SELECT RTRIM('Cat...B...', '.')
FROM DUAL; 

Výsledek:

 RTRIM('CAT...B...','.') ___________________________ Cat...B 

Pokud však zahrneme B v sadě, pak dostaneme jiný výsledek:

SELECT RTRIM('Cat...B...', '.B')
FROM DUAL; 

Výsledek:

 RTRIM('CAT...B...','.B') ____________________________ Kočka 

Příklad databáze

Zde je příklad oříznutí pravé části hodnot ve sloupci databáze:

SELECT 
    country_name,
    RTRIM(country_name, 'an') AS Trimmed
FROM countries
FETCH FIRST 5 ROWS ONLY; 

Výsledek:

 COUNTRY_NAME STŘIŽENO _______________ ___________ Argentina Argenti Austrálie Austrálie Belgie Belgie Brazílie Brazílie Kanada Kanada 

Nulové hodnoty

Pokud je některý argument null výsledkem je null :

SET NULL 'null';

SELECT 
    RTRIM(null, 3),
    RTRIM('Cat ', null),
    RTRIM(null, null)
FROM DUAL; 

Výsledek:

 RTRIM(NULL;3) RTRIM('CAT',NULL) RTRIM(NULL,NULL) ________________ _____________________ ___________________ null null
 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 druhého argumentu má za následek null :

SET NULL 'null';

SELECT RTRIM('Cat   ', '')
FROM DUAL; 

Výsledek:

 RTRIM('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 zprava od řetězce:

SELECT RTRIM('Cat ', ' ')
FROM DUAL; 

Výsledek:

 RTRIM('CAT','') __________________ Kočka 

Nesprávný počet argumentů

Volání RTRIM() bez předání jakýchkoli argumentů vrátí chybu:

SELECT RTRIM()
FROM DUAL; 

Výsledek:

Chyba začínající na řádku:1 v příkazu -SELECT RTRIM()FROM DUALError na příkazovém řádku:1 Sloupec:8Hlášení o chybě -Chyba SQL:ORA-00938:nedostatek argumentů pro funkci00938 . 00000 - "nedostatek argumentů pro funkci"*Příčina:*Akce:

A předání nesprávného počtu argumentů má za následek chybu:

SELECT RTRIM('Cat', 1, '>')
FROM DUAL; 

Výsledek:

Chyba začínající na řádku:1 v příkazu -SELECT RTRIM('Cat', 1, '>')FROM DUALError na příkazovém řádku:1 Sloupec:8Hlášení o chybě -Chyba SQL:ORA-00939:příliš mnoho argumentů pro funkci00939. 00000 - "příliš mnoho argumentů pro funkci"*Příčina:*Akce:

  1. PostgreSQL POPISUJTE TABULKU

  2. Může SQL Server odeslat webový požadavek?

  3. Chyba:Klient nepodporuje ověřovací protokol požadovaný serverem; zvážit upgrade klienta MySQL

  4. Cizí klíče, blokování a konflikty aktualizací