"Si un ouvrier veut bien faire son travail, il doit d'abord affûter ses outils." - Confucius, "Les Entretiens de Confucius. Lu Linggong"
Page de garde > La programmation > Comment diviser en toute sécurité les chaînes en T-SQL à l'aide de délimiteurs?

Comment diviser en toute sécurité les chaînes en T-SQL à l'aide de délimiteurs?

Publié le 2025-03-24
Parcourir:399

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

chaîne de segment basée sur Demiter dans T-SQL

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.

Dernier tutoriel Plus>

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