Maison > base de données > tutoriel mysql > Comment diviser de manière robuste des chaînes dans T-SQL à l'aide de délimiteurs ?

Comment diviser de manière robuste des chaînes dans T-SQL à l'aide de délimiteurs ?

Barbara Streisand
Libérer: 2025-01-08 09:37:45
original
683 Les gens l'ont consulté

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

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>
Copier après la connexion

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>
Copier après la connexion

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>
Copier après la connexion

Description :

  • L'expression CASE vérifie si le délimiteur (/) existe.
  • Si elle est présente, l'expression calcule la longueur de FirstName et LastName en fonction de la position du délimiteur.
  • Si elle n'est pas présente, l'expression utilisera toute la longueur de la chaîne comme FirstName et définira LastName sur NULL.

Ce code produira le résultat attendu :

<code>FirstName---LastName
John--------Smith
Jane--------Doe
Steve-------NULL
Bob---------Johnson</code>
Copier après la connexion

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!

Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal