Heim >Datenbank >MySQL-Tutorial >Wie teilt man Strings in T-SQL mithilfe von Trennzeichen robust auf?

Wie teilt man Strings in T-SQL mithilfe von Trennzeichen robust auf?

Barbara Streisand
Barbara StreisandOriginal
2025-01-08 09:37:45657Durchsuche

How to Robustly Split Strings in T-SQL Using Delimiters?

T-SQL-String-Splitting: Gehen Sie geschickt mit fehlenden Trennzeichen um

Das Aufteilen von Zeichenfolgen anhand von Trennzeichen kann in T-SQL schwierig sein, insbesondere wenn in einigen Zeilen Trennzeichen fehlen. Dieser Artikel bietet eine verbesserte Methode zur Lösung dieses Problems.

Angenommen, die Daten lauten wie folgt:

<code>John/Smith
Jane/Doe
Steve
Bob/Johnson</code>

Originalcode:

Der folgende Code versucht, die Daten aufzuteilen, schlägt jedoch fehl, wenn das Trennzeichen fehlt:

<code>SELECT SUBSTRING(myColumn, 1, CHARINDEX('/', myColumn)-1) AS FirstName,
       SUBSTRING(myColumn, CHARINDEX('/', myColumn) + 1, 1000) AS LastName
FROM MyTable</code>

Verbesserter Code:

Um den Fall fehlender Trennzeichen zu behandeln, können wir den folgenden CASE-Ausdruck verwenden:

<code>SELECT SUBSTRING(myColumn, 1, CASE CHARINDEX('/', myColumn)
            WHEN 0
                THEN LEN(myColumn)
            ELSE CHARINDEX('/', myColumn) - 1
            END) AS FirstName
    ,SUBSTRING(myColumn, CASE CHARINDEX('/', myColumn)
            WHEN 0
                THEN LEN(myColumn) + 1
            ELSE CHARINDEX('/', myColumn) + 1
            END, 1000) AS LastName
FROM MyTable</code>

Beschreibung:

  • Der CASE-Ausdruck prüft, ob das Trennzeichen (/) vorhanden ist.
  • Falls vorhanden, berechnet der Ausdruck die Länge von FirstName und LastName basierend auf der Position des Trennzeichens.
  • Wenn nicht vorhanden, verwendet der Ausdruck die gesamte Länge der Zeichenfolge als „Vorname“ und setzt „Nachname“ auf NULL.

Dieser Code liefert das erwartete Ergebnis:

<code>FirstName---LastName
John--------Smith
Jane--------Doe
Steve-------NULL
Bob---------Johnson</code>

Das obige ist der detaillierte Inhalt vonWie teilt man Strings in T-SQL mithilfe von Trennzeichen robust auf?. 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