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
655 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!

source:php.cn
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