In Oracle, il RTRIM()
La funzione consente di tagliare la parte destra di una stringa. Per impostazione predefinita, taglia lo spazio bianco, ma puoi facoltativamente specificare uno o più caratteri diversi da ritagliare.
Sintassi
La sintassi è questa:
RTRIM(char [, set ])
Dove char
e set
può essere uno qualsiasi dei tipi di dati CHAR
, VARCHAR2
, NCHAR
, NVARCHAR2
, CLOB
o NCLOB
.
RTRIM
rimuove dall'estremità destra di char
tutti i caratteri contenuti nel set
. Se non specifichi set
, quindi il valore predefinito è un singolo spazio vuoto.
Esempio
Ecco un esempio:
SELECT RTRIM('Cat ')
FROM DUAL;
Risultato:
RTRIM('CAT') _______________ Cat
Qui, non ho specificato quale/i carattere/i tagliare, quindi ogni singolo spazio vuoto è stato tagliato dalla parte destra della stringa.
Non è facile vedere l'effetto dell'esempio sopra.
Ecco un altro esempio, con la stringa concatenata con un'altra stringa, mentre si confronta l'output con la stringa originale (non tagliata):
SELECT 'Cat ' || 'Food'
FROM DUAL
UNION ALL
SELECT RTRIM('Cat ') || 'Food'
FROM DUAL;
Risultato:
'CAT'||'FOOD' ________________ Cat Food CatFood
Specifica un carattere
In questo esempio specifico un carattere da tagliare. Questo rende più facile vedere l'effetto:
SELECT RTRIM('...Cat...', '.')
FROM DUAL;
Risultato:
RTRIM('...CAT...','.') _________________________ ...Cat
Quindi possiamo vedere che il personaggio è stato tagliato dal lato destro ma non dal lato sinistro. Per tagliare il lato sinistro, usa LTRIM()
o TRIM()
.
Nota che RTRIM()
taglia solo il personaggio/i nel set up fino a quando non c'è un personaggio che non è nel set. Ecco un esempio di cosa intendo:
SELECT RTRIM('Cat...B...', '.')
FROM DUAL;
Risultato:
RTRIM('CAT...B...','.') __________________________ Cat...B
Tuttavia, se includiamo B
nel set, quindi otteniamo un risultato diverso:
SELECT RTRIM('Cat...B...', '.B')
FROM DUAL;
Risultato:
RTRIM('CAT...B...','.B') ___________________________ Cat
Esempio di database
Ecco un esempio di taglio della parte destra dei valori in una colonna del database:
SELECT
country_name,
RTRIM(country_name, 'an') AS Trimmed
FROM countries
FETCH FIRST 5 ROWS ONLY;
Risultato:
COUNTRY_NAME TRIMMED _______________ ___________ Argentina Argenti Australia Australi Belgium Belgium Brazil Brazil Canada Canad
Valori Nulli
Se un argomento è null
il risultato è null
:
SET NULL 'null';
SELECT
RTRIM(null, 3),
RTRIM('Cat ', null),
RTRIM(null, null)
FROM DUAL;
Risultato:
RTRIM(NULL,3) RTRIM('CAT',NULL) RTRIM(NULL,NULL) ________________ ____________________ ___________________ null null null
Per impostazione predefinita, SQLcl e SQL*Plus restituiscono uno spazio vuoto ogni volta che null
si verifica come risultato di un SQL SELECT
dichiarazione.
Tuttavia, puoi utilizzare SET NULL
per specificare una stringa diversa da restituire. Qui ho specificato che la stringa null
deve essere restituito.
Tagliare le stringhe vuote
Il passaggio di una stringa vuota come secondo argomento restituisce null
:
SET NULL 'null';
SELECT RTRIM('Cat ', '')
FROM DUAL;
Risultato:
RTRIM('CAT','') __________________ null
Ma l'aggiunta di un singolo spazio alla stringa vuota cambia e taglia gli spazi vuoti a destra della stringa:
SELECT RTRIM('Cat ', ' ')
FROM DUAL;
Risultato:
RTRIM('CAT','') __________________ Cat
Conteggio argomenti errato
Chiamando RTRIM()
senza passare alcun argomento restituisce un errore:
SELECT RTRIM()
FROM DUAL;
Risultato:
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:
E il passaggio del numero errato di argomenti genera un errore:
SELECT RTRIM('Cat', 1, '>')
FROM DUAL;
Risultato:
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: