Problem:
Chcesz wyodrębnić podciąg z tekstu w danej kolumnie.
Przykład:
Nasza baza danych zawiera tabelę o nazwie web_address z danymi w kolumnach id i address . Chcemy usunąć „www. ” na początku i „.com ’ na końcu każdego address .
| id | adres |
|---|---|
| 1 | www.example.com |
| 2 | www.google.com |
| 3 | www.learnsql.com |
Rozwiązanie 1:
Aby usunąć pierwsze 4 znaki:
SELECT SUBSTR(address, 5, LENGTH(address) -4) AS substring FROM web_address;
Aby usunąć ostatnie 4 znaki:
SELECT SUBSTR(address, 1, LENGTH(address) -4) AS substring FROM web_address;
Aby usunąć pierwsze 4 znaki i ostatnie 4 znaki:
SELECT SUBSTR(address, 5, LENGTH(address) -8) AS substring FROM web_address;
Rozwiązanie 2:
Aby usunąć pierwsze 4 znaki:
SELECT SUBSTRING(address, 5, LENGTH(address)) AS substring FROM web_address;
Aby usunąć ostatnie 4 znaki:
SELECT SUBSTRING(address, 1, LENGTH(address) -4) AS substring FROM web_address;
Aby usunąć pierwsze 4 znaki i ostatnie 4 znaki:
SELECT SUBSTRING(address, 5, LENGTH(address) -8) AS substring FROM web_address;
Rozwiązanie 3:
Aby usunąć wszystkie znaki przed drugim ‘.’ od prawej:
SELECT SUBSTRING_INDEX(address, '.', -2) AS substring FROM web_address;
Aby usunąć wszystkie znaki po drugim ‘.’ od lewej:
SELECT SUBSTRING_INDEX(address, '.', 2) AS substring FROM web_address;
Aby usunąć wszystkie znaki po drugim ‘.’ od lewej, a następnie usuń wszystkie znaki przed pierwszym ‘.’ od prawej:
SELECT SUBSTRING_INDEX( SUBSTRING_INDEX(address, '.', 2), '.', -1 ) AS substring FROM web_address;
Wynik:
| podciąg |
|---|
| przykład |
| learnsql |
Dyskusja:
Zarówno pierwsze, jak i drugie rozwiązanie usuwają określoną liczbę znaków z tekstu za pomocą SUBSTR() lub SUBSTRING() funkcjonować. SUBSTR() jest synonimem SUBSTRING() . Oba wymagają ciągu znaków i pozycji początkowej jako argumentów. Ostatni argument, który definiuje liczbę znaków do wyodrębnienia, jest opcjonalny. Jeśli ostatni argument zostanie pominięty, zwrócony zostanie cały ciąg (od punktu początkowego).
W trzecim rozwiązaniu SUBSTRING_INDEX() funkcja usuwa tekst przed lub po określonych znakach. Wymaga jako argumentów ciągu, znaku i liczby wystąpień znaku, które należy napotkać w miejscu, w którym rozpoczyna się wyodrębnianie tekstu.