Problem:
Masz kolumnę ciągów i chcesz uzyskać z nich podciągi.
Przykład 1:
W emails tabeli, znajduje się kolumna e-mail. Chcesz wyświetlić pierwszych siedem znaków każdego e-maila.
Tabela wygląda tak:
| jake99@gmail.com |
| tamarablack@zoho.com |
| notine@yahoo.fr |
| jessica1995@onet.pl |
Rozwiązanie 1:
SELECT email, SUBSTRING(email, 1, 7) AS substring FROM emails;
Wynik:
| podciąg | |
|---|---|
| jake99@gmail.com | jake99@ |
| tamarablack@zoho.com | tamarab |
| notine@yahoo.fr | notine@ |
| jessica1995@onet.pl | Jessica |
Dyskusja:
Użyj SUBSTRING() funkcjonować. Pierwszym argumentem jest ciąg znaków lub nazwa kolumny. Drugim argumentem jest indeks znaku, od którego powinien zaczynać się podciąg. Trzeci argument to długość podłańcucha.
Uważaj! W przeciwieństwie do niektórych innych języków programowania, indeksy zaczynają się od 1 , a nie 0. Oznacza to, że pierwszy znak ma indeks 1, drugi znak ma indeks 2 itd.
SUBSTRING(email, 1, 7) zwróci podciągi wartości w email kolumna, która zaczyna się od pierwszego znaku i przechodzi przez siedem znaków.
Przykład 2:
Chcesz wyświetlić podciąg między indeksami 2 i 6 (włącznie).
Rozwiązanie 2:
SELECT email, SUBSTRING(email, 2, 5) AS substring FROM emails;
Wynik:
| podciąg | |
|---|---|
| jake99@gmail.com | ake99 |
| tamarablack@zoho.com | Amara |
| notine@yahoo.fr | otine |
| jessica1995@onet.pl | essic |
Dyskusja:
Używasz SUBSTRING() tak jak w poprzednich przykładach. Tym razem drugim argumentem funkcji jest 2 , ponieważ chcemy zacząć od indeksu 2. Długość podciągu wynosi 5 (end_index - start_index + 1 ).
Przykład 3:
Chcesz wyświetlić podciąg, który zaczyna się od @ znak i kończy się na końcu ciągu, ale nie znasz dokładnych indeksów ani długości.
Rozwiązanie 3:
SELECT
email,
SUBSTRING(email, CHARINDEX('@', email), LEN(email) - CHARINDEX('@', email) + 1) AS substring
FROM emails;
Wynik:
| podciąg | |
|---|---|
| jake99@gmail.com | @gmail.com |
| tamarablack@zoho.com | @zoho.com |
| notine@yahoo.fr | @yahoo.fr |
| jessica1995@onet.pl | @onet.pl |
Dyskusja:
Używasz SUBSTRING() tak jak w poprzednich przykładach. Tym razem szukasz konkretnej postaci, której pozycja może się różnić w zależności od rzędu. Aby znaleźć indeks określonego znaku, możesz użyć CHARINDEX(character, column) funkcja gdzie znak jest konkretnym znakiem, od którego chcesz rozpocząć podciąg (tutaj, @ ). Kolumna argumentów to kolumna, z której chcesz pobrać podciąg; może to być również dosłowny ciąg.
Trzeci argument funkcji SUBSTRING() funkcja to długość podciągu. Możesz to obliczyć za pomocą CHARINDEX() i LEN() Funkcje. Robisz to, odejmując indeks od długości kolumny, a następnie dodając 1:
LEN(email) - CHARINDEX('@', email) + 1
Możesz również chcieć pobrać podciąg, który nie kończy się na końcu ciągu, ale na określonym znaku, np. przed '. „. Oto jak możesz to zrobić:
SELECT
email,
SUBSTRING(email, CHARINDEX('@', email), CHARINDEX('.', email) - CHARINDEX('@', email)) AS substring
FROM emails;
Wynik tego zapytania to:
| podciąg | |
|---|---|
| jake99@gmail.com | @gmail |
| tamarablack@zoho.com | @zoho |
| notine@yahoo.fr | @yahoo |
| jessica1995@onet.pl | @onet |
Część CHARINDEX('.', email) - CHARINDEX('@', email) po prostu oblicza długość podciągu.