sql >> Database >  >> RDS >> Oracle

RTRIM() Functie in Oracle

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:

  1. SQLServer vs StateServer voor ASP.NET Session State Performance

  2. Hoe u kunt bijhouden wat de gebruikers doen?

  3. Param doorgeven aan DB .execute voor WHERE IN... INT list

  4. Hoe krijg je meerdere tellingen met één SQL-query?