Oracle
 sql >> Baza danych >  >> RDS >> Oracle

Jak wyodrębnić podciąg z ciągu w Oracle/SQLite?

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
jake99@gmail.com
tamarablack@zoho.com
notine@yahoo.fr
jessica1995@onet.pl

Rozwiązanie 1:

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

Wynik:

e-mail podciąg
jake99@gmail.com jake99@
tamarablack@zoho.com tamarab
notine@yahoo.fr notine@
jessica1995@onet.pl Jessica

Dyskusja:

Użyj SUBSTR() 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.

>SUBSTR(email, 1, 7) zwróci podciągi wartości w kolumnie e-mail, które zaczynają się od pierwszego znaku i trwają siedem znaków.

Przykład 2:

Chcesz wyświetlić podciąg między indeksami 2 i 6 (włącznie).

Rozwiązanie 2:

SELECT
  email,
  SUBSTR(email, 2, 5) AS substring
FROM emails;

Wynik:

e-mail podciąg
jake99@gmail.com ake99
tamarablack@zoho.com Amara
notine@yahoo.fr otine
jessica1995@onet.pl essic

Dyskusja:

Używasz SUBSTR() tak jak w poprzednim przykładzie. 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ę znakiem @ 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,
  SUBSTR(email, INSTR(email, '@'), LENGTH(email) - INSTR(email, '@') + 1) AS substring
FROM emails;

Wynik:

e-mail 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 SUBSTR() 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ć INSTR(column, character) funkcja, gdzie kolumna jest ciągiem literału lub kolumną, z której chcesz pobrać podciąg, a znak jest character w którym chcesz rozpocząć podciąg (tutaj, @ ).

Trzeci argument funkcji SUBSTR() funkcja to długość podciągu. Możesz to obliczyć za pomocą INSTR() i LENGTH() Funkcje. Robisz to, odejmując indeks od długości kolumny, a następnie dodając 1:

LENGTH(email) - INSTR(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,
  SUBSTR(email, INSTR(email, '@'), INSTR(email, '.') - INSTR(email, '@')) AS substring
FROM emails;

Wynik tego zapytania to:

e-mail podciąg
jake99@gmail.com @gmail
tamarablack@zoho.com @zoho
notine@yahoo.fr @yahoo
jessica1995@onet.pl @onet

Część INSTR(email, '.') - INSTR(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. Partycja Oracle według słowa kluczowego

  2. Oracle PLS-00363:wyrażenie „” nie może być użyte jako cel przypisania

  3. Jak wybrać podciąg w Oracle SQL do określonego znaku?

  4. Klonuj ORACLE_HOME

  5. Zastępowanie tekstu w kolumnie BLOB