Kiedy pracujesz z imionami, adresami, emailami albo innymi tekstami — prawie zawsze musisz zrobić jedną z dwóch rzeczy:
- Wyciągnąć część tekstu
- Poznać długość
- Wyczyścić niepotrzebne spacje
- Znaleźć/zamienić fragment
- Sformatować wynik
Na przykład, musisz:
- Wyświetlić tylko nazwisko z pełnego imienia i nazwiska.
- Znaleźć studentów, których nazwisko zaczyna się na „P”.
- Zamienić wszystkie spacje na podkreślenia.
- Wyświetlić nazwisko z wielkiej litery.
Wszystkie te zadania ogarniesz łatwo dzięki funkcjom tekstowym PostgreSQL.
LENGTH() — długość tekstu
Funkcja LENGTH() zwraca liczbę znaków w tekście.
Składnia:
LENGTH(string)
Przykład:
SELECT name, LENGTH(name) AS name_length
FROM students;
| name | name_length |
|---|---|
| Art | 3 |
| Song | 4 |
| Pal | 3 |
Przydatne do sprawdzania długości imienia i nazwiska, haseł i innych tekstów.
SUBSTRING() — wyciąganie części tekstu
Pozwala wyciągnąć podciąg z tekstu — na przykład pierwsze 3 znaki nazwiska albo domenę z emaila.
Składnia:
SUBSTRING(string FROM start FOR length)
start— pozycja pierwszego znaku (liczenie od 1)length— ile znaków wyciągnąć
Przykład 1: pierwsze 3 litery nazwiska
SELECT last_name, SUBSTRING(last_name FROM 1 FOR 3) AS prefix
FROM students;
| last_name | prefix |
|---|---|
| Song | Son |
| Pal | Pal |
Przykład 2: domena emaila
SELECT email, SUBSTRING(email FROM POSITION('@' IN email) + 1) AS domain
FROM students;
| domain | |
|---|---|
| otto@example.com | example.com |
| maria@gmail.com | gmail.com |
TRIM() — usuwanie zbędnych spacji
Usuwa spacje (i inne znaki) na początku i/lub na końcu tekstu.
Składnia:
TRIM([LEADING | TRAILING | BOTH] chars FROM string)
Ale najczęściej używasz po prostu:
TRIM(string)
Przykład:
SELECT '[' || TRIM(' Art ') || ']' AS cleaned;
| cleaned |
|---|
| [Art] |
Szczególnie ważne, jeśli użytkownicy wpisują dane ręcznie (np. ze spacjami na początku).
POSITION() — szukanie podciągu
Zwraca pozycję, od której zaczyna się podciąg.
Składnia:
POSITION(substring IN string)
Przykład:
SELECT email, POSITION('@' IN email) AS at_position
FROM students;
| at_position | |
|---|---|
| otto@example.com | 5 |
| anna.pal@gmail.com | 9 |
Możesz użyć razem z SUBSTRING() żeby wyciągać części tekstu.
REPLACE() — zamiana podciągu
Zamienia wszystkie wystąpienia jednego podciągu na inny.
Składnia:
REPLACE(string, from_substring, to_substring)
Przykład: zamień spacje na podkreślenia
SELECT name, REPLACE(name, ' ', '_') AS fixed_name
FROM students;
| name | fixed_name |
|---|---|
| Otto Art | Otto_Art |
| Maria Chi | Maria_Chi |
INITCAP() — pierwsza litera wielka
Zmienia tekst tak, żeby pierwsza litera każdego słowa była wielka, reszta — małe.
Składnia:
INITCAP(string)
Przykład:
SELECT INITCAP('anna pal') AS full_name;
| full_name |
|---|
| Anna Pal |
Przydatne do standaryzacji imion i nazwisk.
GO TO FULL VERSION