W Oracle TRIM()
funkcja umożliwia przycinanie znaków z boków ciągu.
Możesz przycinać znaki wiodące, znaki końcowe lub jedno i drugie.
Domyślnie przycina białe znaki, ale możesz opcjonalnie określić inny znak lub znaki do przycięcia.
Składnia
Składnia wygląda tak:
TRIM([ { { LEADING | TRAILING | BOTH }
[ trim_character ]
| trim_character
}
FROM
]
trim_source
)
Oba trim_character
i trim_source
może być VARCHAR2
lub dowolny typ danych, który można niejawnie przekonwertować na VARCHAR2
.
Przykład
Oto prosty przykład do zademonstrowania:
SELECT TRIM('.' FROM '...Cat...')
FROM DUAL;
Wynik:
TRIM('.'FROM'...CAT...') ___________________________ Cat
W tym przypadku określony znak (.
) został usunięty z obu stron sznurka.
Został usunięty z obu stron, ponieważ nie określiłem, z której strony go usunąć.
Możemy uzyskać ten sam wynik, dołączając BOTH
słowo kluczowe:
SELECT TRIM(BOTH '.' FROM '...Cat...')
FROM DUAL;
Wynik:
TRIM(BOTH'.'FROM'...CAT...') _______________________________ Cat
Przytnij główne postacie
I znowu, ale z usuniętymi tylko wiodącymi postaciami:
SELECT TRIM(LEADING '.' FROM '...Cat...')
FROM DUAL;
Wynik:
TRIM(LEADING'.'FROM'...CAT...') __________________________________ Cat...
Przytnij końcowe znaki
I oto jest z usuniętymi tylko znakami końcowymi:
SELECT TRIM(TRAILING '.' FROM '...Cat...')
FROM DUAL;
Wynik:
TRIM(TRAILING'.'FROM'...CAT...') ___________________________________ ...Cat
Domyślny znak
W tym przykładzie nie określam znaku do przycięcia, dlatego przycina on puste miejsca:
SELECT TRIM(' Cat ')
FROM DUAL;
Wynik:
TRIM('CAT') ______________ Cat
Nie jest tak łatwo zobaczyć efekt przycinania białych znaków z obu stron.
Oto kolejny przykład, który ułatwia zobaczenie, że biała przestrzeń została usunięta z obu stron:
SELECT
'My' || ' Fat ' || 'Cat',
'My' || TRIM(' Fat ') || 'Cat'
FROM DUAL;
Wynik:
'MY'||'FAT'||'CAT' 'MY'||TRIM('FAT')||'CAT' _____________________ ___________________________ My Fat Cat MyFatCat
Liczby
Łańcuch i znak przycinania mogą mieć postać VARCHAR2
lub dowolny typ danych, który można niejawnie przekonwertować na VARCHAR2
, więc możemy przekazać liczbę podobną do poniższej. Jednak zwracana wartość to VARCHAR2
.
SELECT TRIM(LEADING 0 FROM 007)
FROM DUAL;
Wynik:
TRIM(LEADING0FROM007) ________________________ 7
Tutaj jest z przyciętym innym numerem:
SELECT TRIM(LEADING 1 FROM 117)
FROM DUAL;
Wynik:
TRIM(LEADING1FROM117) ________________________ 7
Wartości puste
Jeśli ciąg lub znak przycinania ma wartość null
wynik to null
:
SET NULL 'null';
SELECT
TRIM(null FROM '...Cat...'),
TRIM(BOTH FROM null),
TRIM(null FROM null)
FROM DUAL;
Wynik:
TRIM(NULLFROM'...CAT...') TRIM(BOTHFROMNULL) TRIM(NULLFROMNULL) ____________________________ _____________________ _____________________ null null null
Domyślnie SQLcl i SQL*Plus zwracają spację, gdy null
występuje w wyniku polecenia SQL SELECT
oświadczenie.
Możesz jednak użyć SET NULL
aby określić inny ciąg do zwrócenia. Tutaj określiłem, że ciąg null
należy zwrócić.
Przycinanie pustych ciągów
Przekazanie pustego ciągu jako znaku przycinania powoduje null
:
SET NULL 'null';
SELECT TRIM('' FROM ' Cat')
FROM DUAL;
Wynik:
TRIM(''FROM'CAT') ____________________ null
Ale dodanie pojedynczej spacji do pustego ciągu zmienia to i usuwa wszelkie spacje z ciągu:
SET NULL 'null';
SELECT TRIM(' ' FROM ' Cat')
FROM DUAL;
Wynik:
TRIM(''FROM'CAT') ____________________ Cat
Nieprawidłowa liczba argumentów
Wywołanie TRIM()
bez przekazywania żadnych argumentów zwraca błąd:
SELECT TRIM()
FROM DUAL;
Wynik:
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:
A przekazanie niewłaściwej liczby argumentów skutkuje błędem:
SELECT TRIM(' Cat ', 2)
FROM DUAL;
Wynik:
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:
Zobacz także RTRIM()
i LTRIM()
dla bardziej ukierunkowanych funkcji do przycinania każdej strony ciągu. Te funkcje umożliwiają również wycięcie wielu znaków z ciągu.