sql >> Database >  >> RDS >> Oracle

TRIM() Functie in Oracle

In Oracle, de TRIM() functie stelt u in staat om tekens van de zijkanten van een tekenreeks bij te snijden.

U kunt voorlooptekens, nalooptekens of beide inkorten.

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:

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

Beide trim_character en trim_source kan VARCHAR2 . zijn of elk gegevenstype dat impliciet kan worden geconverteerd naar VARCHAR2 .

Voorbeeld

Hier is een eenvoudig voorbeeld om te demonstreren:

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

Resultaat:

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

In dit geval het opgegeven teken (. ) is aan beide zijden van de string verwijderd.

Het is van beide kanten verwijderd omdat ik niet heb aangegeven aan welke kant het moet worden verwijderd.

We kunnen hetzelfde resultaat krijgen door de BOTH . op te nemen zoekwoord:

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

Resultaat:

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

Snij hoofdpersonages af

Hier is het weer, maar met alleen hoofdtekens verwijderd:

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

Resultaat:

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

Trimtekens achteraan

En hier is het met alleen achterliggende tekens verwijderd:

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

Resultaat:

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

Standaard teken

In dit voorbeeld specificeer ik geen teken dat moet worden bijgesneden, daarom wordt de lege ruimte bijgesneden:

SELECT TRIM(' Cat ')
FROM DUAL;

Resultaat:

   TRIM('CAT') 
______________ 
Cat           

Het is niet zo eenvoudig om het effect te zien als de witruimte van beide kanten wordt bijgesneden.

Hier is nog een voorbeeld dat het gemakkelijker maakt om te zien dat de witruimte aan beide kanten is verwijderd:

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

Resultaat:

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

Cijfers

De tekenreeks en het trimteken kunnen VARCHAR2 . zijn of elk gegevenstype dat impliciet kan worden geconverteerd naar VARCHAR2 , zodat we een getal als het volgende kunnen doorgeven. De geretourneerde waarde is echter VARCHAR2 .

SELECT TRIM(LEADING 0 FROM 007)
FROM DUAL;

Resultaat:

   TRIM(LEADING0FROM007) 
________________________ 
7                      

Hier is het met een ander nummer dat wordt bijgesneden:

SELECT TRIM(LEADING 1 FROM 117)
FROM DUAL;

Resultaat:

   TRIM(LEADING1FROM117) 
________________________ 
7                        

Null-waarden

Als de tekenreeks of het trimteken null is het resultaat is null :

SET NULL 'null';

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

Resultaat:

   TRIM(NULLFROM'...CAT...')    TRIM(BOTHFROMNULL)    TRIM(NULLFROMNULL) 
____________________________ _____________________ _____________________ 
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 trimteken resulteert in null :

SET NULL 'null';

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

Resultaat:

   TRIM(''FROM'CAT') 
____________________ 
null                

Maar het toevoegen van een enkele spatie aan de lege tekenreeks verandert dat, en snijdt eventuele lege spaties van de tekenreeks af:

SET NULL 'null';

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

Resultaat:

   TRIM(''FROM'CAT') 
____________________ 
Cat                 

Onjuist aantal argumenten

TRIM() . aanroepen zonder het doorgeven van argumenten geeft een fout:

SELECT TRIM()
FROM DUAL;

Resultaat:

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:

En het doorgeven van het verkeerde aantal argumenten resulteert in een fout:

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

Resultaat:

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:

Zie ook RTRIM() en LTRIM() voor meer gerichte functies voor het trimmen van elke kant van een string. Met deze functies kunt u ook meerdere tekens uit de tekenreeks knippen.


  1. Hoe het ROracle-pakket op Windows 7 te installeren?

  2. SQL Server 2017-back-up -2

  3. Wat is de volgorde van records in een tabel met een samengestelde primaire sleutel

  4. SQL Server Bulk Insert – Deel 2