Maison >base de données >tutoriel mysql >Comment diviser efficacement des chaînes avec des délimiteurs facultatifs dans T-SQL ?
Gestion du fractionnement de chaînes avec ou sans délimiteurs en T-SQL
Les requêtes SQL nécessitent souvent de manipuler des chaînes et d'extraire des parties spécifiques en fonction de délimiteurs. Cependant, la gestion des situations dans lesquelles les délimiteurs peuvent être manquants ou facultatifs nécessite une planification minutieuse.
Dans le scénario donné, la tâche consiste à diviser une colonne de chaîne contenant des noms (prénom et nom) séparés par le caractère '/'. Le code suppose initialement que toutes les lignes contiennent des délimiteurs, mais une erreur se produit pour les lignes qui n'en contiennent pas.
Afin de traiter efficacement ce problème, nous pouvons mettre en œuvre les modifications suivantes :
<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>
Ce code modifié utilise l'instruction CASE pour vérifier si le caractère '/' existe (s'il n'existe pas, CHARINDEX('/') renvoie 0). Si elle est trouvée, la chaîne est divisée comme prévu ; sinon, elle traite la chaîne entière comme le prénom et définit le nom sur NULL.
En ajoutant cette logique, la requête devient robuste et peut gérer des lignes avec et sans délimiteurs, donnant le résultat souhaité :
FirstName | LastName |
---|---|
John | Smith |
Jane | Doe |
Steve | NULL |
Bob | Johnson |
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!