Séparation de chaînes T-SQL : gérer intelligemment les délimiteurs manquants
Le fractionnement de chaînes en fonction de délimiteurs peut être délicat dans T-SQL, en particulier lorsque les délimiteurs sont manquants dans certaines lignes. Cet article fournit une méthode améliorée pour résoudre ce problème.
Supposons que les données soient les suivantes :
<code>John/Smith Jane/Doe Steve Bob/Johnson</code>
Code d'origine :
Le code suivant tente de diviser les données mais échoue lorsque le délimiteur est manquant :
<code>SELECT SUBSTRING(myColumn, 1, CHARINDEX('/', myColumn)-1) AS FirstName, SUBSTRING(myColumn, CHARINDEX('/', myColumn) + 1, 1000) AS LastName FROM MyTable</code>
Code amélioré :
Pour gérer le cas de délimiteurs manquants, nous pouvons utiliser l'expression CASE suivante :
<code>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</code>
Description :
Ce code produira le résultat attendu :
<code>FirstName---LastName John--------Smith Jane--------Doe Steve-------NULL Bob---------Johnson</code>
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!