Handhabung der Zeichenfolgenaufteilung mit oder ohne Trennzeichen in T-SQL
SQL-Abfragen erfordern oft die Bearbeitung von Zeichenfolgen und das Extrahieren bestimmter Teile basierend auf Trennzeichen. Der Umgang mit Situationen, in denen Trennzeichen fehlen oder optional sind, erfordert jedoch eine sorgfältige Planung.
Im gegebenen Szenario besteht die Aufgabe darin, eine Zeichenfolgenspalte zu teilen, die Namen (Vorname und Nachname) enthält, die durch das Zeichen „/“ getrennt sind. Der Code geht zunächst davon aus, dass alle Zeilen Trennzeichen enthalten. Bei Zeilen, in denen dies nicht der Fall ist, tritt jedoch ein Fehler auf.
Um dieses Problem effizient zu lösen, können wir die folgenden Änderungen vornehmen:
<code class="language-sql">SELECT CASE WHEN CHARINDEX('/', myColumn) = 0 THEN myColumn ELSE SUBSTRING(myColumn, 1, CHARINDEX('/', myColumn) - 1) END AS FirstName, CASE WHEN CHARINDEX('/', myColumn) = 0 THEN NULL ELSE SUBSTRING(myColumn, CHARINDEX('/', myColumn) + 1, LEN(myColumn)) END AS LastName FROM MyTable;</code>
Dieser geänderte Code verwendet die CASE-Anweisung, um zu prüfen, ob das Zeichen „/“ existiert (wenn es nicht existiert, gibt CHARINDEX('/') 0 zurück). Wenn die Zeichenfolge gefunden wird, wird sie wie erwartet aufgeteilt. Andernfalls wird die gesamte Zeichenfolge als Vorname behandelt und der Nachname auf NULL gesetzt.
Durch das Hinzufügen dieser Logik wird die Abfrage robust und kann Zeilen mit und ohne Trennzeichen verarbeiten und liefert die gewünschte Ausgabe:
FirstName | LastName |
---|---|
John | Smith |
Jane | Doe |
Steve | NULL |
Bob | Johnson |
Das obige ist der detaillierte Inhalt vonWie kann man Strings mit optionalen Trennzeichen in T-SQL effizient aufteilen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!