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
[email protected]
[email protected]
[email protected]
[email protected]

Rozwiązanie 1:

SELECT
  email,
  SUBSTR(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 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
[email protected] ake99
[email protected] Amara
[email protected] otine
[email protected] 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
[email protected] @gmail.com
[email protected] @zoho.com
[email protected] @yahoo.fr
[email protected] @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
[email protected] @gmail
[email protected] @zoho
[email protected] @yahoo
[email protected] @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