sql >> Database teknologi >  >> RDS >> Oracle

TRIM() Funktion i Oracle

I Oracle er TRIM() funktionen giver dig mulighed for at trimme tegn fra siderne af en streng.

Du kan trimme hovedkarakterer, efterfølgende karakterer eller begge dele.

Som standard trimmer den hvide mellemrum, men du kan valgfrit angive et eller flere andre tegn, der skal trimmes.

Syntaks

Syntaksen ser sådan ud:

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

Begge trim_character og trim_source kan være VARCHAR2 eller enhver datatype, der implicit kan konverteres til VARCHAR2 .

Eksempel

Her er et simpelt eksempel til at demonstrere:

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

Resultat:

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

I dette tilfælde er det angivne tegn (. ) blev fjernet fra begge sider af strengen.

Den blev fjernet fra begge sider, fordi jeg ikke specificerede, hvilken side den skulle fjernes fra.

Vi kan få det samme resultat ved at inkludere BOTH søgeord:

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

Resultat:

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

Trim ledende karakterer

Her er den igen, men med kun hovedpersoner fjernet:

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

Resultat:

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

Trim efterfølgende tegn

Og her er det med kun efterfølgende tegn fjernet:

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

Resultat:

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

Standardtegn

I dette eksempel angiver jeg ikke tegn, der skal trimmes, derfor beskærer det tomrum:

SELECT TRIM(' Cat ')
FROM DUAL;

Resultat:

   TRIM('CAT') 
______________ 
Cat           

Det er ikke så let at se effekten, når du trimmer mellemrum fra begge sider.

Her er et andet eksempel, der gør det lettere at se, at det hvide mellemrum blev fjernet fra begge sider:

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

Resultat:

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

Numre

Strengen og trimkarakteren kan være VARCHAR2 eller enhver datatype, der implicit kan konverteres til VARCHAR2 , så vi kan videregive et tal som det følgende. Returværdien er dog VARCHAR2 .

SELECT TRIM(LEADING 0 FROM 007)
FROM DUAL;

Resultat:

   TRIM(LEADING0FROM007) 
________________________ 
7                      

Her er det med et andet nummer, der trimmes:

SELECT TRIM(LEADING 1 FROM 117)
FROM DUAL;

Resultat:

   TRIM(LEADING1FROM117) 
________________________ 
7                        

Nul-værdier

Hvis enten strengen eller trimmetegnet er null resultatet er 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 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 trimtegn resulterer i null :

SET NULL 'null';

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

Resultat:

   TRIM(''FROM'CAT') 
____________________ 
null                

Men tilføjelse af et enkelt mellemrum til den tomme streng ændrer det, og trimmer eventuelle tomme mellemrum fra strengen:

SET NULL 'null';

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

Resultat:

   TRIM(''FROM'CAT') 
____________________ 
Cat                 

Forkert antal argumenter

Kalder TRIM() uden at sende nogen argumenter returnerer en fejl:

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:

Og at sende det forkerte antal argumenter resulterer i en fejl:

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 også RTRIM() og LTRIM() for mere målrettede funktioner til trimning af hver side af en streng. Disse funktioner giver dig også mulighed for at trimme flere tegn fra strengen.


  1. PostGIS i aktion

  2. Sådan undslipper du enkelt citat, specielle tegn i MySQL

  3. INDIEN, STD Code Finder Script i PHP, MYSQL, JQUERY

  4. Modellering af en database til registrering af salg. Del 1