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.