Frage:
In SQL kann die Verwendung von Substring, um Strings basierend auf Grenzwerten zu teilen, Fehler verursachen, wenn der Trennzeichen nicht existiert. Der folgende Code zeigt dies:
SELECT SUBSTRING(myColumn, 1, CHARINDEX('/', myColumn)-1) AS FirstName,
SUBSTRING(myColumn, CHARINDEX('/', myColumn) 1, 1000) AS LastName
FROM MyTable
Wenn eine Zeile ohne Trennzeichen auftritt, wirft sie einen Fehler aus: "Der Länge Parameter für die linke oder Substring ist ungültig."
Lösung:
Um dieses Problem zu lösen, können Sie die Fallanweisung in der Substring -Funktion verwenden, wie unten gezeigt:
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
Dieser aktualisierte Code verwendet Charindex, um die Position des Trennzeichens zu bewerten. Wenn der Trennzeichen nicht gefunden wird (Charindex gibt 0 zurück), verwendet die Fallanweisung die Länge der Zeichenfolge, um sicherzustellen, dass die gesamte Zeichenfolge als Name behandelt wird. Wenn ein Trennzeichen existiert, berechnet er die Position des ersten Zeichens nach dem Trennzeichen als Startindex des Nachnamens. Haftungsausschluss: Alle bereitgestellten Ressourcen stammen teilweise aus dem Internet. Wenn eine Verletzung Ihres Urheberrechts oder anderer Rechte und Interessen vorliegt, erläutern Sie bitte die detaillierten Gründe und legen Sie einen Nachweis des Urheberrechts oder Ihrer Rechte und Interessen vor und senden Sie ihn dann an die E-Mail-Adresse: [email protected] Wir werden die Angelegenheit so schnell wie möglich für Sie erledigen.
Copyright© 2022 湘ICP备2022001581号-3