Archiwa tagu: both

PostgreSQL funkcja TRIM (leading, trailing, both) – wycinamy znaki z łańcucha głównego

Kolejną przydatną funkcją dotyczącą łańcuchów znaków jest funkcja TRIM(). Dzięki tej funkcji możemy wycinać zdefiniowane znaki lub ciągi znaków z przodu, z tyłu lub z obu stron naraz z głównego łańcucha znaków. Pamiętaj przy funkcji TRIM() wielkość znaków ma znaczenie.
Zwracany typ: TEXT

PostgreSQL TRIM() składnia

TRIM( [słowo_kluczowe] [znaki] from łańcuch_główny )

słowo kluczowe – tutaj używamy słów kluczowych leading – oznacza cięcie z przodu ciągu, trailing – oznacza cięcie od tyłu ciągu, both – oznacza cięcie z obu stron naraz.
znaki – tutaj określamy ciąg znaków lub pojedyncze znaki do ucięcia.
łańcuch_główny – tutaj określamy łańcuch główny z którego będziemy ucinać znaki.


Przykłady zastosowania funkcji TRIM()

SELECT
    TRIM(leading 'ala' from 'Ala ma kota.')

Wynik

Ala ma kota

Wykorzystaliśmy słówko leading więc funkcja TRIM powinna wyciąć z łańcucha głównego z początku zdania wyraz 'ala'. Dlaczego tego nie zrobił? Jak wcześniej napisałem przy funkcji TRIM wielkość liter ma znaczenie. Zwróć uwagę, że 'ala' jako ciąg znaków do wycięcia  jest napisane od małej litery 'a' a 'Ala' w zdaniu głównym jest napisane od dużej litery 'A'.

No to teraz zróbmy to jak należy.

SELECT
    TRIM(leading 'Ala' from 'Ala ma kota.')

Wynik

 ma kota

Zwróć uwagę, że w wyniku ' ma kota' przed słówkiem 'ma' jest spacja. Pamiętaj, spacja to też znak, a kazaliśmy funkcji TRIM wyciąć tylko 'Ala'.

Teraz wytnijmy coś od tyłu ciągu

SELECT
    TRIM(trailing 'a.t' from 'Ala ma kota.')

Wynik

Ala ma ko

Tutaj mamy ciekawy przykład. Widzimy w wyniku, że ucieliśmy ciąg 'ta.' a w paramtrach określiliśmy ciąg 'a.t'. Jak już pisałm wcześniej kompilator sprawdza czy znaki na końcu łańcucha głównego odpowiadają znakom ze zdefiniowanego przez nas ciągu niezależnie od ich pozycji w ciągu.

Teraz utnijmy coś z obu stron.

SELECT
    TRIM(both 'atA' from 'Ala ma kota.')

Wynik

la ma kota.

Dlaczego z łańcucha głównego zostało wycięte tylko 'A' z początku ciągu? Bo w zdefiniowanych przez nas znakach znalazł się znak 'A' (nieważne na którym miejscu) a na końcu łańcucha głównego jest znak '.' którego nie było w zdefiniowanych przez nas znakach. Zasada jest taka że ucinanie znaków zaczyna się od wskazanego kierunku znak po znaku. Jeżeli w naszym ciągu znaków na początku lub na końcu będzie znak który nie znajduje się w zdefiniowanych przez nas znakach to ucinanie zostanie przerwane, nawet jeżeli zaraz za tym pierwszym znakiem są znaki które są zdefiniowane w naszym ciągu do ucięcia.

Jeżeli wyświetlamy lub chcemy obrabiać jakieś ciągi znaków i nie jesteśmy pewni czy dane nie zawierają zbędnych spacji na początku lub końcu łańcucha znaków (np. czy użytkownicy wprowadzający dane do bazy nie wstawili przez przypadek zbędnych spacji) to funkcja TRIM() nadaje się doskonale do tego zadania.

W naszym przykładzie użyjemy zdania 'Ala ma kota.' ale na początku i na końcu zdania wstawimy po dwie spacje. Wtedy nasz ciąg przybieże postać '  Ala ma kota.  '. Teraz funkcją TRIM() usuniemy zbędne znaki z początku i końca ciągu. Między słówkiem both a from nie wstawiamy żadnych znaków, bo chcemy żeby funkcja usunęła tylko zbędne spacje.

SELECT
    TRIM(both from '  Ala ma kota.  ')

Wynik

Ala ma kota.

W wyniku otrzymujemy zdanie 'Ala ma kota.' bez spacji na początku i na końcu zdania.

Funkcja TRIM() na jeszcze jedną składnię. Możemy napisać tak jak na początku

TRIM( [słowo_kluczowe] [znaki] FROM łańcuch_główny )

lub

TRIM( [słowo_kluczowe] FROM łańcuch_główny [znaki] )

efekt końcowy będzie identyczny


postgresqlpostgresql