Chaîne de délimiteur divisée dans SQL Server
SQL Server ne dispose pas de fonctions natives de fractionnement de chaînes, ce qui crée des problèmes lors de la gestion des chaînes délimitées. Cependant, nous pouvons résoudre intelligemment ce problème en utilisant la fonction PARSENAME.
Pour diviser une chaîne comme « Hello John Smith » par un délimiteur (par exemple un espace) et accéder à l'élément à un index spécifique, suivez ces étapes :
<code class="language-sql">REPLACE('Hello John Smith', ' ', '.')</code>
<code class="language-sql">SELECT PARSENAME(REPLACE('Hello John Smith', ' ', '.'), 2)</code>
Cette méthode fonctionne en créant une table temporaire avec une seule colonne, où chaque valeur représente un fragment de la chaîne d'origine. Cependant, il est important de noter que cette méthode peut ne pas fonctionner si la chaîne d'origine contient déjà un point.
Solutions tierces
Vous pouvez également envisager d'utiliser une fonction définie par l'utilisateur (UDF) spécifiquement pour le fractionnement de chaînes. Cette approche offre une plus grande flexibilité et fiabilité.
Ce qui suit est un exemple d'UDF qui divise une chaîne à l'aide d'un délimiteur spécifié :
<code class="language-sql">CREATE FUNCTION Split(@String VARCHAR(MAX), @Delimiter VARCHAR(1)) RETURNS TABLE AS RETURN (SELECT Item FROM ( SELECT ROW_NUMBER() OVER (ORDER BY r.rn) AS rn, LEFT(s, CHARINDEX(@Delimiter, s) - 1) AS Item FROM (SELECT @String AS s, 1 AS rn UNION ALL SELECT SUBSTRING(@String, CHARINDEX(@Delimiter, @String) + 1, LEN(@String)), rn + 1 FROM Split(@String, @Delimiter)) AS r WHERE s IS NOT NULL ) AS t)</code>
Exemple d'utilisation :
Pour diviser la chaîne « Hello John Smith » à l'aide du délimiteur « », exécutez la requête suivante :
<code class="language-sql">SELECT * FROM Split('Hello John Smith', ' ')</code>
Cette requête renverra une table avec deux colonnes : rn (l'index de l'élément) et Item (la valeur de l'élément).
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!