sql >> Databasteknik >  >> RDS >> Oracle

TRIM() Funktion i Oracle

I Oracle, TRIM() funktionen låter dig trimma tecken från sidorna av en sträng.

Du kan trimma inledande karaktärer, efterföljande karaktärer eller båda.

Som standard trimmar det vitt utrymme, men du kan valfritt ange ett eller flera olika tecken att trimma.

Syntax

Syntaxen ser ut så här:

TRIM([ { { LEADING | TRAILING | BOTH }
         [ trim_character ]
       | trim_character
       }
       FROM 
     ]
     trim_source
    )

Båda trim_character och trim_source kan vara VARCHAR2 eller någon datatyp som implicit kan konverteras till VARCHAR2 .

Exempel

Här är ett enkelt exempel att visa:

SELECT TRIM('.' FROM '...Cat...')
FROM DUAL;

Resultat:

   TRIM('.'FROM'...CAT...') 
___________________________ 
Cat                        

I det här fallet, det angivna tecknet (. ) togs bort från båda sidor av strängen.

Den togs bort från båda sidor eftersom jag inte angav vilken sida jag skulle ta bort den från.

Vi kan få samma resultat genom att inkludera BOTH nyckelord:

SELECT TRIM(BOTH '.' FROM '...Cat...')
FROM DUAL;

Resultat:

   TRIM(BOTH'.'FROM'...CAT...') 
_______________________________ 
Cat                            

Trimma ledande karaktärer

Här är den igen, men med endast ledande karaktärer borttagna:

SELECT TRIM(LEADING '.' FROM '...Cat...')
FROM DUAL;

Resultat:

   TRIM(LEADING'.'FROM'...CAT...') 
__________________________________ 
Cat...                            

Trimma efterföljande tecken

Och här är den med endast efterföljande tecken borttagna:

SELECT TRIM(TRAILING '.' FROM '...Cat...')
FROM DUAL;

Resultat:

   TRIM(TRAILING'.'FROM'...CAT...') 
___________________________________ 
...Cat                             

Standardtecken

I det här exemplet anger jag inte tecken som ska trimmas, därför trimmar det tomt utrymme:

SELECT TRIM(' Cat ')
FROM DUAL;

Resultat:

   TRIM('CAT') 
______________ 
Cat           

Det är inte så lätt att se effekten när du trimmar blanksteg från båda sidor.

Här är ett annat exempel som gör det lättare att se att det vita utrymmet togs bort från båda sidor:

SELECT 
    'My' || ' Fat ' || 'Cat',
    'My' || TRIM(' Fat ') || 'Cat'
FROM DUAL;

Resultat:

   'MY'||'FAT'||'CAT'    'MY'||TRIM('FAT')||'CAT' 
_____________________ ___________________________ 
My Fat Cat            MyFatCat                   

Siffror

Strängen och trimtecken kan vara VARCHAR2 eller någon datatyp som implicit kan konverteras till VARCHAR2 , så vi kan skicka ett nummer som följande. Returvärdet är dock VARCHAR2 .

SELECT TRIM(LEADING 0 FROM 007)
FROM DUAL;

Resultat:

   TRIM(LEADING0FROM007) 
________________________ 
7                      

Här är det med ett annat nummer som trimmas:

SELECT TRIM(LEADING 1 FROM 117)
FROM DUAL;

Resultat:

   TRIM(LEADING1FROM117) 
________________________ 
7                        

Nullvärden

Om antingen strängen eller beskärningstecknet är null resultatet är null :

SET NULL 'null';

SELECT 
    TRIM(null FROM '...Cat...'),
    TRIM(BOTH FROM null),
    TRIM(null FROM null)
FROM DUAL;

Resultat:

   TRIM(NULLFROM'...CAT...')    TRIM(BOTHFROMNULL)    TRIM(NULLFROMNULL) 
____________________________ _____________________ _____________________ 
null                         null                  null                 

Som standard returnerar SQLcl och SQL*Plus ett tomt utrymme när null uppstår som ett resultat av en SQL SELECT påstående.

Du kan dock använda SET NULL för att ange en annan sträng som ska returneras. Här specificerade jag att strängen null bör returneras.

Trimmar tomma strängar

Att skicka en tom sträng som trimma tecken resulterar i null :

SET NULL 'null';

SELECT TRIM('' FROM '   Cat')
FROM DUAL;

Resultat:

   TRIM(''FROM'CAT') 
____________________ 
null                

Men att lägga till ett enstaka mellanslag i den tomma strängen ändrar det och trimmar alla tomma mellanslag från strängen:

SET NULL 'null';

SELECT TRIM(' ' FROM '   Cat')
FROM DUAL;

Resultat:

   TRIM(''FROM'CAT') 
____________________ 
Cat                 

Inkorrekt antal argument

Anropar TRIM() utan att skicka några argument returnerar ett fel:

SELECT TRIM()
FROM DUAL;

Resultat:

Error starting at line : 1 in command -
SELECT TRIM()
FROM DUAL
Error at Command Line : 1 Column : 13
Error report -
SQL Error: ORA-00936: missing expression
00936. 00000 -  "missing expression"
*Cause:    
*Action:

Och att skicka fel antal argument resulterar i ett fel:

SELECT TRIM(' Cat ', 2)
FROM DUAL;

Resultat:

Error starting at line : 1 in command -
SELECT TRIM(' Cat ', 2)
FROM DUAL
Error at Command Line : 1 Column : 20
Error report -
SQL Error: ORA-00907: missing right parenthesis
00907. 00000 -  "missing right parenthesis"
*Cause:    
*Action:

Se även RTRIM() och LTRIM() för mer riktade funktioner för att trimma varje sida av en sträng. Dessa funktioner låter dig också trimma flera tecken från strängen.


  1. Hur man ställer in destinationskatalog för arkivlogg i Oracle-databasen

  2. Räkna förekomsten av DISTINCT-värden

  3. PostgreSQL - ställ in ett standardcellvärde enligt ett annat cellvärde

  4. Hur man skapar en exekveringsplan i SQL Server