Maison >base de données >tutoriel mysql >Comment diviser des chaînes dans T-SQL avec des délimiteurs manquants ?
Fractionnement de chaînes basé sur des délimiteurs dans T-SQL, gestion des délimiteurs manquants
En T-SQL, vous devrez peut-être diviser une chaîne en fonction d'un délimiteur spécifique, même si ce délimiteur n'est pas toujours présent. Cette tâche est généralement effectuée à l'aide de la fonction SUBSTRING. Cependant, le code fourni dans la question échoue lorsqu'il manque le délimiteur attendu sur une ligne.
Pour résoudre ce problème, considérez le code modifié suivant :
<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>
Dans ce code, une instruction CASE est utilisée pour déterminer où commencent et se terminent les sous-chaînes des colonnes FirstName et LastName. La position de départ de la colonne FirstName est définie sur le début de la chaîne (si aucun délimiteur n'est trouvé) ou sur le caractère précédant le délimiteur. De même, la position de fin de la colonne FirstName est définie sur la fin de la chaîne ou sur le caractère précédant le délimiteur.
Cette méthode garantit que le code peut gérer les lignes avec les délimiteurs attendus ainsi que les lignes sans délimiteurs attendus sans générer d'erreurs. La sortie résultante fournira les valeurs FirstName et LastName requises, même pour les lignes sans délimiteurs, où les valeurs manquantes apparaîtront comme NULL. C'est plus concis et efficace que le code d'origine, et gère plus clairement les délimiteurs manquants.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!