In Oracle, de RTRIM()
functie stelt u in staat om het rechterdeel van een string in te korten. Standaard wordt witruimte bijgesneden, maar u kunt optioneel een ander teken of andere tekens opgeven om bij te snijden.
Syntaxis
De syntaxis gaat als volgt:
RTRIM(char [, set ])
Waar char
en set
kan elk van de gegevenstypen zijn CHAR
, VARCHAR2
, NCHAR
, NVARCHAR2
, CLOB
, of NCLOB
.
RTRIM
verwijdert vanaf het rechteruiteinde van char
alle tekens in set
. Als u set
. niet opgeeft , dan is het standaard een enkele spatie.
Voorbeeld
Hier is een voorbeeld:
SELECT RTRIM('Cat ')
FROM DUAL;
Resultaat:
RTRIM('CAT') _______________ Cat
Hier heb ik niet gespecificeerd welk(e) teken(s) ik moest bijsnijden, en dus werd elke afzonderlijke spatie bijgesneden vanaf het rechterdeel van de tekenreeks.
Het is niet gemakkelijk om het effect van het bovenstaande voorbeeld te zien.
Hier is nog een voorbeeld, waarbij de string wordt samengevoegd met een andere string, terwijl de uitvoer wordt vergeleken met de originele (niet-getrimde) string:
SELECT 'Cat ' || 'Food'
FROM DUAL
UNION ALL
SELECT RTRIM('Cat ') || 'Food'
FROM DUAL;
Resultaat:
'CAT'||'FOOD' ________________ Cat Food CatFood
Geef een karakter op
In dit voorbeeld geef ik een teken op om te trimmen. Dit maakt het gemakkelijker om het effect te zien:
SELECT RTRIM('...Cat...', '.')
FROM DUAL;
Resultaat:
RTRIM('...CAT...','.') _________________________ ...Cat
We kunnen dus zien dat het personage aan de rechterkant is bijgesneden, maar niet aan de linkerkant. Gebruik LTRIM()
. om de linkerkant bij te snijden of TRIM()
.
Merk op dat RTRIM()
snijdt alleen het teken/de tekens in de set-up bij totdat er een personage is dat niet in de set zit. Hier is een voorbeeld van wat ik bedoel:
SELECT RTRIM('Cat...B...', '.')
FROM DUAL;
Resultaat:
RTRIM('CAT...B...','.') __________________________ Cat...B
Als we echter B
in de set, dan krijgen we een ander resultaat:
SELECT RTRIM('Cat...B...', '.B')
FROM DUAL;
Resultaat:
RTRIM('CAT...B...','.B') ___________________________ Cat
Databasevoorbeeld
Hier is een voorbeeld van het bijsnijden van het rechterdeel van de waarden in een databasekolom:
SELECT
country_name,
RTRIM(country_name, 'an') AS Trimmed
FROM countries
FETCH FIRST 5 ROWS ONLY;
Resultaat:
COUNTRY_NAME TRIMMED _______________ ___________ Argentina Argenti Australia Australi Belgium Belgium Brazil Brazil Canada Canad
Null-waarden
Als een argument null
is het resultaat is null
:
SET NULL 'null';
SELECT
RTRIM(null, 3),
RTRIM('Cat ', null),
RTRIM(null, null)
FROM DUAL;
Resultaat:
RTRIM(NULL,3) RTRIM('CAT',NULL) RTRIM(NULL,NULL) ________________ ____________________ ___________________ null null null
Standaard retourneren SQLcl en SQL*Plus een spatie wanneer null
treedt op als resultaat van een SQL SELECT
uitspraak.
U kunt echter SET NULL
. gebruiken om een andere tekenreeks op te geven die moet worden geretourneerd. Hier heb ik gespecificeerd dat de string null
moet worden geretourneerd.
Lege snaren trimmen
Het doorgeven van een lege string als het tweede argument resulteert in null
:
SET NULL 'null';
SELECT RTRIM('Cat ', '')
FROM DUAL;
Resultaat:
RTRIM('CAT','') __________________ null
Maar door een enkele spatie aan de lege tekenreeks toe te voegen, verandert dat, en worden eventuele lege spaties aan de rechterkant van de tekenreeks bijgesneden:
SELECT RTRIM('Cat ', ' ')
FROM DUAL;
Resultaat:
RTRIM('CAT','') __________________ Cat
Onjuist aantal argumenten
RTRIM()
. aanroepen zonder het doorgeven van argumenten geeft een fout:
SELECT RTRIM()
FROM DUAL;
Resultaat:
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:
En het doorgeven van het verkeerde aantal argumenten resulteert in een fout:
SELECT RTRIM('Cat', 1, '>')
FROM DUAL;
Resultaat:
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: