Database
 sql >> Baza danych >  >> RDS >> Database

Jak wyodrębnić podciąg z ciągu w T-SQL

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:

e-mail
[email protected]
[email protected]
[email protected]
[email protected]

Rozwiązanie 1:

SELECT
  email,
  SUBSTRING(email, 1, 7) AS substring
FROM emails;

Wynik:

e-mail podciąg
[email protected] jake99@
[email protected] tamarab
[email protected] notine@
[email protected] 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:

e-mail podciąg
[email protected] ake99
[email protected] Amara
[email protected] otine
[email protected] 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:

e-mail podciąg
[email protected] @gmail.com
[email protected] @zoho.com
[email protected] @yahoo.fr
[email protected] @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:

e-mail podciąg
[email protected] @gmail
[email protected] @zoho
[email protected] @yahoo
[email protected] @onet

Część CHARINDEX('.', email) - CHARINDEX('@', email) po prostu oblicza długość podciągu.


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Jak grupować według dwóch kolumn w SQL

  2. Dokumentacja SQL dla początkujących

  3. Jak dezaktywować wtyczki z bazy danych WordPress

  4. Podstawy wyrażeń tabelarycznych, część 13 – Wbudowane funkcje o wartościach tabelarycznych, ciąg dalszy

  5. Jak stworzyć bazę danych w SQL?