Oracle
 sql >> Datenbank >  >> RDS >> Oracle

TRIM()-Funktion in Oracle

In Oracle das TRIM() Mit der Funktion können Sie Zeichen von den Seiten einer Zeichenfolge abschneiden.

Sie können führende Zeichen, nachfolgende Zeichen oder beides kürzen.

Standardmäßig schneidet es Leerzeichen ab, aber Sie können optional ein anderes Zeichen oder andere Zeichen zum Zuschneiden angeben.

Syntax

Die Syntax lautet wie folgt:

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

Sowohl trim_character und trim_source kann VARCHAR2 sein oder ein beliebiger Datentyp, der implizit in VARCHAR2 konvertiert werden kann .

Beispiel

Hier ist ein einfaches Beispiel zur Veranschaulichung:

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

Ergebnis:

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

In diesem Fall wird das angegebene Zeichen (. ) wurde von beiden Seiten der Schnur entfernt.

Es wurde von beiden Seiten entfernt, weil ich nicht angegeben habe, von welcher Seite es entfernt werden soll.

Wir können dasselbe Ergebnis erhalten, indem wir BOTH einschließen Stichwort:

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

Ergebnis:

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

Führende Zeichen kürzen

Hier ist es noch einmal, aber nur führende Zeichen wurden entfernt:

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

Ergebnis:

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

Nachgestellte Zeichen kürzen

Und hier ist es nur mit entfernten nachgestellten Zeichen:

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

Ergebnis:

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

Standardzeichen

In diesem Beispiel gebe ich kein zu kürzendes Zeichen an, daher werden Leerzeichen gekürzt:

SELECT TRIM(' Cat ')
FROM DUAL;

Ergebnis:

   TRIM('CAT') 
______________ 
Cat           

Es ist nicht so einfach, den Effekt zu sehen, wenn Leerzeichen von beiden Seiten getrimmt werden.

Hier ist ein weiteres Beispiel, das es einfacher macht zu erkennen, dass der Leerraum auf beiden Seiten entfernt wurde:

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

Ergebnis:

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

Zahlen

Das String- und Trimmzeichen kann VARCHAR2 sein oder ein beliebiger Datentyp, der implizit in VARCHAR2 konvertiert werden kann , also können wir eine Zahl wie die folgende übergeben. Der Rückgabewert ist jedoch VARCHAR2 .

SELECT TRIM(LEADING 0 FROM 007)
FROM DUAL;

Ergebnis:

   TRIM(LEADING0FROM007) 
________________________ 
7                      

Hier wird eine andere Nummer getrimmt:

SELECT TRIM(LEADING 1 FROM 117)
FROM DUAL;

Ergebnis:

   TRIM(LEADING1FROM117) 
________________________ 
7                        

Nullwerte

Wenn entweder die Zeichenfolge oder das Trimmzeichen null ist das Ergebnis ist null :

SET NULL 'null';

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

Ergebnis:

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

Standardmäßig geben SQLcl und SQL*Plus ein Leerzeichen zurück, wenn null tritt als Ergebnis eines SQL SELECT auf Erklärung.

Sie können jedoch SET NULL verwenden um eine andere Zeichenfolge anzugeben, die zurückgegeben werden soll. Hier habe ich angegeben, dass der String null zurückgegeben werden soll.

Leere Strings trimmen

Das Übergeben einer leeren Zeichenfolge als Trimmzeichen führt zu null :

SET NULL 'null';

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

Ergebnis:

   TRIM(''FROM'CAT') 
____________________ 
null                

Aber das Hinzufügen eines einzelnen Leerzeichens zum leeren String ändert dies und entfernt alle Leerzeichen aus dem String:

SET NULL 'null';

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

Ergebnis:

   TRIM(''FROM'CAT') 
____________________ 
Cat                 

Falsche Argumentanzahl

Aufruf von TRIM() ohne Übergabe von Argumenten gibt einen Fehler zurück:

SELECT TRIM()
FROM DUAL;

Ergebnis:

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:

Und das Übergeben der falschen Anzahl von Argumenten führt zu einem Fehler:

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

Ergebnis:

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:

Siehe auch RTRIM() und LTRIM() für gezieltere Funktionen zum Trimmen jeder Seite einer Saite. Mit diesen Funktionen können Sie auch mehrere Zeichen aus der Zeichenfolge entfernen.