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 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 druhého argumentu má za následek
null
:SET NULL 'null'; SELECT RTRIM('Cat ', '') FROM DUAL;
Výsledek:
RTRIM('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 zprava od řetězce:
SELECT RTRIM('Cat ', ' ') FROM DUAL;
Výsledek:
RTRIM('CAT','') __________________ KočkaNesprá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: