Maison > base de données > tutoriel mysql > Comment diviser en toute sécurité des chaînes dans T-SQL à l'aide de délimiteurs ?

Comment diviser en toute sécurité des chaînes dans T-SQL à l'aide de délimiteurs ?

Linda Hamilton
Libérer: 2025-01-08 09:52:41
original
306 Les gens l'ont consulté

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

Chaîne divisée en fonction du délimiteur en T-SQL

Question :

En SQL, l'utilisation de SUBSTRING pour diviser une chaîne en fonction d'un délimiteur peut provoquer une erreur lorsque le délimiteur n'existe pas. Le code ci-dessous le démontre :

<code class="language-sql">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

Lorsqu'une ligne sans délimiteur est rencontrée, l'erreur est générée : "L'argument de longueur passé à la fonction LEFT ou SUBSTRING n'est pas valide

."

Solution :

Pour résoudre ce problème, vous pouvez utiliser l'instruction CASE dans la fonction SUBSTRING comme suit :

<code class="language-sql">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

Ce code mis à jour utilise CHARINDEX pour évaluer la position du délimiteur. Si le délimiteur n'est pas trouvé (CHARINDEX renvoie 0), l'instruction CASE utilise la longueur de la chaîne pour garantir que la chaîne entière est traitée comme un nom. Si un délimiteur est présent, il calcule la position du premier caractère après le délimiteur comme index de départ du nom de famille.

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