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.