Fehler: Ungültiger parameter length übergeben, mit der richtigen Funktion, im Namen parsing-script
I gotta problem. Wenn ich den code unten bekomme ich eine Fehlermeldung:
ungültige Länge parameter übergeben, um die richtige Funktion. Was bedeutet das und wie kann es Weggehen? Seine zu analysieren, ein name wie smith, steve s steve r smith in die Spalten firstname, middlename und lastname
UPDATE table5
SET lastName = LEFT(Name, CHARINDEX(', ', Name) - 1),
firstname = SUBSTRING(Name,
CHARINDEX(', ', Name) + 2,
CASE
WHEN CHARINDEX(' ', Name, CHARINDEX(', ', Name) + 2) = 0 THEN LEN(Name) + 1
ELSE CHARINDEX(' ', Name, CHARINDEX(', ', Name) + 2)
END - CHARINDEX(', ', Name) - 2
),
middlename= RIGHT(Name,
LEN(Name) - CASE
WHEN CHARINDEX(' ', Name, CHARINDEX(', ', Name) + 2) = 0 THEN LEN(Name)
ELSE CHARINDEX(' ', Name, CHARINDEX(', ', Name) + 2)
END
)
den "name" - Spalte ist vom Datentyp varchar (50) und firstname, middlename und lastname-Spalten sind auch auf varchar (50) . Ich bin irgendwie ratlos.. danke im Voraus
- Viel helfen wird, wenn Sie die möglichen Daten-format im Namen. Weil dein Beispiel ist nicht klar. Gibt es eine Koma
,
? ist es ein Raum? gibt es einen Vornamen?.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Den Fehler ist, weil
CHARINDEX()
ist 0 zurückgeben undSUBSTRING()
erfordern bei Anzahl größer als 0 ist. Ihre Annahme ist korrekt, string ohne Zweitnamen geben Sie Fehler.Können Sie dies überprüfen, fiddle und lassen Sie mich wissen, wenn, dass ist das format, das Sie verwenden für name. Da der Gordon Linoff Abfrage scheint zu funktionieren für Sie wählen
SQL FIDDLE
HINWEIS:
Update ich den SqlFiddle mit
Meine Vermutung ist, dass einige Ihren Namen nicht
,
Können Sie überprüfen, tun
Können Sie auch überprüfen Sie Ihre anderen CHARINDEX Zustand mit Ihren Daten zu sehen, die man RETURN 0
Ich würde lieber eine Funktion schreiben, Hier ist der code.
Testen Sie die Funktion mit ein paar Szenarien. Ich denke, dass ich fallen die meisten, aber es sich lohnt einen zweiten Blick. Ich würde sehr empfehlen Ihnen, einen auswählen, bevor Sie ein update und sehen, ob die Daten korrekt und wie erwartet.
Verwendung mit Ihrem Tisch
Bedeutet es, dass
charindex()
ist 0 zurückgeben, die Sie auf der Durchreise sind eine weitere Funktion. Eine Möglichkeit dieses Problem zu beheben ist:Dadurch wird sichergestellt, dass
Name
hat zwei Räume, die Ihre Logik vorausgesetzt.in sql