Heim >Datenbank >MySQL-Tutorial >Wie extrahiere ich bestimmte Daten aus einer durch Trennzeichen getrennten Zeichenfolge in T-SQL?

Wie extrahiere ich bestimmte Daten aus einer durch Trennzeichen getrennten Zeichenfolge in T-SQL?

Linda Hamilton
Linda HamiltonOriginal
2024-12-21 06:50:13707Durchsuche

How to Extract Specific Data from a Delimited String in T-SQL?

So isolieren Sie bestimmte Daten aus einer durch Trennzeichen getrennten Zeichenfolge in T-SQL

In der Welt von SQL kann die Arbeit mit Zeichenfolgen manchmal eine Herausforderung darstellen , insbesondere wenn versucht wird, bestimmte Informationen aus einer längeren Zeichenfolge zu extrahieren, die mehrere Datenpunkte enthält. Lassen Sie uns ein Szenario untersuchen, in dem Sie eine Tabelle mit einer Spalte haben, die eine Zeichenfolge enthält, die mehrere durch ein Trennzeichen getrennte Schlüssel-Wert-Paare enthält.

Problemdefinition

Gegeben ist eine Tabelle mit der folgenden Struktur:

Col1 = '123'
Col2 = 'AAAAA'
Col3 = 'Clent ID = 4356hy|Client Name = B B BOB|Client Phone = 667-444-2626|Client Fax = 666-666-0151|Info = INF8888877 -MAC333330554/444400800'

Ihr Ziel ist es, nur den Wert „Kundenname“ zu extrahieren, der in diesem Fall „B B“ ist BOB“ aus der Spalte „Col3“. Die Trennzeichen, die die Schlüssel-Wert-Paare trennen, sind „|“. Pipe-Zeichen und die Schlüssel-Wert-Paare selbst werden durch das Gleichheitszeichen (' = ') mit führenden und nachgestellten Leerzeichen getrennt.

Lösung

Um dieses Problem zu beheben Problem in T-SQL können Sie die folgenden String-Manipulationstechniken anwenden:

  1. CHARINDEX und SUBSTRING: Verwenden Sie die CHARINDEX-Funktion, um die Startposition des Schlüssels „Client Name“ zu finden und den entsprechenden Wert aus der Originalzeichenfolge zu substringen.
  2. STUFF: Verwenden Sie die STUFF-Funktion, um Fügen Sie am Anfang des Teilstrings ein Trennzeichen ein, um ihn vom Rest des Strings zu trennen.
  3. LTRIM und RTRIM:Verwenden Sie die Funktionen LTRIM und RTRIM, um alle führenden oder nachgestellten Leerzeichen aus dem extrahierten Wert zu entfernen.

Code-Snippet

Für Ihre spezifischen Daten , können Sie das folgende Code-Snippet verwenden, um das gewünschte zu erreichen Ergebnis:

Select col1, col2, LTRIM(RTRIM(SUBSTRING(
    STUFF(col3, CHARINDEX('|', col3,
    PATINDEX('%|Client Name =%', col3) + 14), 1000, ''),
    PATINDEX('%|Client Name =%', col3) + 14, 1000))) col3
from Table01

Hinweis: Es kann zu geringfügigen Leistungsunterschieden kommen, wenn Sie CHARINDEX gegenüber PATINDEX verwenden, um die Startposition des Schlüssels zu ermitteln. Allerdings liefern beide Ansätze im Allgemeinen ähnliche Ergebnisse, da ihre Effizienz vergleichbar ist.

Das obige ist der detaillierte Inhalt vonWie extrahiere ich bestimmte Daten aus einer durch Trennzeichen getrennten Zeichenfolge in T-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