Heim >Datenbank >MySQL-Tutorial >Wie extrahiere ich Teilzeichenfolgen vor einem Unterstrich in Oracle SQL?

Wie extrahiere ich Teilzeichenfolgen vor einem Unterstrich in Oracle SQL?

Patricia Arquette
Patricia ArquetteOriginal
2024-12-29 00:26:09413Durchsuche

How to Extract Substrings Before an Underscore in Oracle SQL?

Extrahieren von Teilzeichenfolgen zu einem bestimmten Zeichen in Oracle SQL

Problem:
Auswählen von Teilzeichenfolgen aus einer Spalte, die zuvor Ergebnisse mit unterschiedlichen Zeichenfolgen enthält ein Unterstrichzeichen („_“), wobei der Unterstrich ausgeschlossen wird selbst.

Lösung:

Um das gewünschte Ergebnis zu erzielen, bietet eine Kombination von SQL-Funktionen eine Lösung:

SELECT NVL(SUBSTR(column, 0, INSTR(column, '_')-1), column) AS output
FROM YOUR_TABLE;

Erklärung :

  • Die SUBSTR-Funktion extrahiert eine Teilzeichenfolge beginnend an der angegebenen Position (0) und fortlaufend für eine angegebene Länge.
  • Die INSTR-Funktion bestimmt die Position des ersten Vorkommens des Unterstrichs innerhalb der Zeichenfolge.
  • Die NVL-Funktion wertet den ersten Nicht-Null-Wert aus und stellt so sicher, dass Teilzeichenfolgen keinen Unterstrich enthalten Das Zeichen gibt den ursprünglichen Wert zurück.
  • Die Subtraktion von 1 von INSTR(Spalte, '_') stellt sicher, dass nur Zeichen vor dem Unterstrich enthalten sind im Ausgabe.

Beispiel:

Gegeben:

ORG | VALUE
1   | ABC_blahblahblah
2   | DEFGH_moreblahblahblah
3   | IJKLMNOP_moremoremoremore

Abfrage:

SELECT NVL(SUBSTR(VALUE, 0, INSTR(VALUE, '_')-1), VALUE) AS output
FROM ORG;

Ergebnis:

OUTPUT
ABC
DEFGH
IJKLMNOP

Hinweis:

Für In Oracle10g-Versionen kann die Funktion REGEXP_SUBSTR als Alternative zu SUBSTR:

SELECT REGEXP_SUBSTR(column, '^.*(?=_)') AS output
FROM YOUR_TABLE;
verwendet werden

Das obige ist der detaillierte Inhalt vonWie extrahiere ich Teilzeichenfolgen vor einem Unterstrich in Oracle SQL?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn