question:
Dans SQL, l'utilisation de la sous-chaîne pour diviser les chaînes basées sur les délimiteurs peut provoquer des erreurs lorsque le délimiteur n'existe pas. Le code suivant le démontre:
SELECT SUBSTRING(myColumn, 1, CHARINDEX('/', myColumn)-1) AS FirstName,
SUBSTRING(myColumn, CHARINDEX('/', myColumn) 1, 1000) AS LastName
FROM MyTable
Lorsqu'une ligne sans délimiteur est rencontrée, il lance une erreur: "Le paramètre de longueur transmis à la fonction gauche ou de la sous-chaîne est invalide."
Solution:
Pour résoudre ce problème, vous pouvez utiliser l'instruction de cas dans la fonction de sous-chaîne comme indiqué ci-dessous:
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
Ce code mis à jour utilise Charindex pour évaluer la position du délimiteur. Si le délimiteur n'est pas trouvé (Charindex renvoie 0), l'instruction de cas utilise la longueur de la chaîne pour garantir que la chaîne entière est traitée comme un nom. Si un délimiteur existe, il calcule la position du premier caractère après le délimiteur comme index de départ du nom de famille.
Clause de non-responsabilité: Toutes les ressources fournies proviennent en partie d'Internet. En cas de violation de vos droits d'auteur ou d'autres droits et intérêts, veuillez expliquer les raisons détaillées et fournir une preuve du droit d'auteur ou des droits et intérêts, puis l'envoyer à l'adresse e-mail : [email protected]. Nous nous en occuperons pour vous dans les plus brefs délais.
Copyright© 2022 湘ICP备2022001581号-3