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ść.