Lista funkcji łańcuchowych
Więcej funkcji niż data i czas - tylko typ String. Które w SQL są podane przez typy CHAR(n) i VARCHAR(n). Przypomnijmy najpopularniejsze z nich:
Funkcjonować | Opis | |
---|---|---|
1 | DŁUGOŚĆ (str) | Zwraca długość przekazanego łańcucha w bajtach |
2 | DŁUGOŚĆ_ZNAKÓW(str) | Zwraca długość przekazanego ciągu znaków w znakach |
3 | LOKALIZUJ(podciąg;ciąg), | Wyszukuje podłańcuch w łańcuchu podobnie do metody indexOf(). |
4 | ZLOKALIZUJ(podciąg;ciąg;pozycja) | Wyszukuje podłańcuch w łańcuchu zaczynającym się od poz |
5 | CONCAT(str1;str2;...) | Łączy wiele linii |
6 | PODŁAŃCUCH(), PODŁAŃCUCH() | Zwraca podłańcuch podany przez zakres znaków |
7 | NIŻSZY(str) | Konwertuje ciąg na małe litery |
8 | GÓRNA(str) | Konwertuje ciąg na wielkie litery |
9 | ZASTĘPOWAĆ() | Zastępuje podciąg w ciągu |
10 | MECZ() | Sprawdza, czy łańcuch pasuje do podanego wzorca |
jedenaście | PRZYTNIJ(str) | Przycina puste znaki na początku i na końcu łańcucha |
12 | LTRIM(str) | Przycina puste znaki na początku łańcucha |
13 | RTRIM(str) | Przycina puste znaki na końcu łańcucha |
14 | TO_BASE64(str) | Konwertuje ciąg na Base64 |
15 | FROM_BASE64(str) | Konwertuje ciąg z Base64 |
Celowo pogrupowałem funkcje w małe grupy, aby ułatwić zrozumienie, jak z nimi pracować. Poniżej rozważymy jedną funkcję z każdej grupy. Pełną listę funkcji do pracy z łańcuchami można znaleźć w oficjalnej dokumentacji .
Przekonwertujmy ciąg
Zajmijmy się najpierw najprostszymi funkcjami, które po prostu konwertują łańcuch znaków do nieco innej postaci. Na przykład przekonwertuj ciąg na wielkie i małe litery. Ogólnie ich zachowanie jest podobne do tych samych funkcji w języku Java.
Podam więc tabelę z kilkoma przykładami.
# | Wniosek | Wynik |
---|---|---|
1 | WYBIERZ DŁUGOŚĆ („tekst”) | 4 |
2 | WYBIERZ DŁUGOŚĆ („Cześć”) | 12 |
3 | WYBIERZ NIŻSZY („Cześć”) | Cześć |
4 | WYBIERZ GÓRNY („Cześć”) | CZEŚĆ |
5 | WYBIERZ SUBSTR („Cześć”, 2, 3) | riv |
6 | SELECT SUBSTR („Cześć, jak się masz?”, 8) | Jak się masz? |
Funkcje działają zgodnie z oczekiwaniami, podobnie jak ich odpowiedniki z JDK.
Jedyne zastrzeżenie: w pierwszym wierszu wynikiem jest 4, a nie 8. Chodzi o to, że w żądaniu do zakodowania znaków łacińskich używany jest 1 bajt (kodowanie ASCII) . Ale jeśli pracujesz z danymi z bazy danych, długość łańcucha będzie zależała od ustawień kodowania bazy danych . Podczas pracy z bazą znajdziesz wiele niespodzianek :)
Złożone akcje z łańcuchami
Cóż, przyjrzyjmy się bardziej złożonym rzeczom podczas pracy z łańcuchami. Co byście wymyślili...
Wyświetlajmy zadania z tabeli zadań, a jeśli termin zadania już minął, to dodajmy do opisu zadania słowo WYGAŚNIĘTE!
Brzmi interesująco. Chociaż nie nauczyliśmy się jeszcze złożonych warunków, uprośćmy trochę zadanie. Napiszmy po prostu zapytanie, które wyświetli listę przeszłych zadań, ale pamiętajmy o dodaniu słowa „WAŻNY!” w tytule. .
Aby to zrobić, będziemy musieli użyć funkcji CONCAT:
SELECT CONCAT( 'EXPIRED! ', name) FROM task
WHERE deadline < CURDATE()
Wynikiem tego zapytania będzie:
concat('WAŻNY!', nazwa) |
---|
WYGASŁY! Napraw błąd w interfejsie użytkownika |
Rekomendacje. Jeśli potrzebujesz tylko przekonwertować dane do nieco innej postaci, można to również zrobić na poziomie kodu Java. Ale jeśli chcesz używać funkcji łańcuchowych po stronie serwera SQL (wewnątrz WHERE), to zdecydowanie nie możesz się bez nich obejść.
GO TO FULL VERSION