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.