I Oracle er RTRIM()
funktionen giver dig mulighed for at trimme den højre del af en streng. Som standard trimmer det hvidt mellemrum, men du kan valgfrit angive et eller flere andre tegn, der skal trimmes.
Syntaks
Syntaksen ser sådan ud:
RTRIM(char [, set ])
Hvor char
og set
kan være enhver af datatyperne CHAR
, VARCHAR2
, NCHAR
, NVARCHAR2
, CLOB
eller NCLOB
.
RTRIM
fjerner fra højre ende af char
alle tegn indeholdt i set
. Hvis du ikke angiver set
, så er det som standard et enkelt tomt.
Eksempel
Her er et eksempel:
SELECT RTRIM('Cat ')
FROM DUAL;
Resultat:
RTRIM('CAT') _______________ Cat
Her specificerede jeg ikke hvilke tegn, der skulle trimmes, og så hver enkelt blank blev trimmet fra den højre del af strengen.
Det er ikke let at se effekten af ovenstående eksempel.
Her er et andet eksempel, hvor strengen er sammenkædet med en anden streng, mens outputtet sammenlignes med den originale (utrimmede) streng:
SELECT 'Cat ' || 'Food'
FROM DUAL
UNION ALL
SELECT RTRIM('Cat ') || 'Food'
FROM DUAL;
Resultat:
'CAT'||'FOOD' ________________ Cat Food CatFood
Angiv et tegn
I dette eksempel angiver jeg et tegn, der skal trimmes. Dette gør det nemmere at se effekten:
SELECT RTRIM('...Cat...', '.')
FROM DUAL;
Resultat:
RTRIM('...CAT...','.') _________________________ ...Cat
Så vi kan se, at karakteren blev trimmet fra højre side, men ikke venstre side. For at trimme venstre side, brug LTRIM()
eller TRIM()
.
Bemærk at RTRIM()
trimmer kun karakteren/erne i sættet, indtil der er en karakter, der ikke er i sættet. Her er et eksempel på, hvad jeg mener:
SELECT RTRIM('Cat...B...', '.')
FROM DUAL;
Resultat:
RTRIM('CAT...B...','.') __________________________ Cat...B
Men hvis vi inkluderer B
i sættet, så får vi et andet resultat:
SELECT RTRIM('Cat...B...', '.B')
FROM DUAL;
Resultat:
RTRIM('CAT...B...','.B') ___________________________ Cat
Databaseeksempel
Her er et eksempel på trimning af den højre del af værdierne i en databasekolonne:
SELECT
country_name,
RTRIM(country_name, 'an') AS Trimmed
FROM countries
FETCH FIRST 5 ROWS ONLY;
Resultat:
COUNTRY_NAME TRIMMED _______________ ___________ Argentina Argenti Australia Australi Belgium Belgium Brazil Brazil Canada Canad
Nul-værdier
Hvis et argument er null
resultatet er null
:
SET NULL 'null';
SELECT
RTRIM(null, 3),
RTRIM('Cat ', null),
RTRIM(null, null)
FROM DUAL;
Resultat:
RTRIM(NULL,3) RTRIM('CAT',NULL) RTRIM(NULL,NULL) ________________ ____________________ ___________________ null null null
Som standard returnerer SQLcl og SQL*Plus et tomt mellemrum, når null
opstår som et resultat af en SQL SELECT
udmelding.
Du kan dog bruge SET NULL
for at angive en anden streng, der skal returneres. Her specificerede jeg, at strengen null
skal returneres.
Trimning af tomme strenge
At sende en tom streng som det andet argument resulterer i null
:
SET NULL 'null';
SELECT RTRIM('Cat ', '')
FROM DUAL;
Resultat:
RTRIM('CAT','') __________________ null
Men tilføjelse af et enkelt mellemrum til den tomme streng ændrer det, og trimmer eventuelle tomme mellemrum fra højre for strengen:
SELECT RTRIM('Cat ', ' ')
FROM DUAL;
Resultat:
RTRIM('CAT','') __________________ Cat
Forkert antal argumenter
Kalder RTRIM()
uden at sende nogen argumenter returnerer en fejl:
SELECT RTRIM()
FROM DUAL;
Resultat:
Error starting at line : 1 in command - SELECT RTRIM() FROM DUAL Error at Command Line : 1 Column : 8 Error report - SQL Error: ORA-00938: not enough arguments for function 00938. 00000 - "not enough arguments for function" *Cause: *Action:
Og at sende det forkerte antal argumenter resulterer i en fejl:
SELECT RTRIM('Cat', 1, '>')
FROM DUAL;
Resultat:
Error starting at line : 1 in command - SELECT RTRIM('Cat', 1, '>') FROM DUAL Error at Command Line : 1 Column : 8 Error report - SQL Error: ORA-00939: too many arguments for function 00939. 00000 - "too many arguments for function" *Cause: *Action: