Maison >base de données >tutoriel mysql >Comment extraire des données spécifiques d'une chaîne délimitée dans T-SQL ?
Comment isoler des données spécifiques d'une chaîne délimitée dans T-SQL
Dans le monde de SQL, travailler avec des chaînes peut parfois présenter des défis , en particulier lorsque vous tentez d'extraire des informations spécifiques d'une chaîne plus longue contenant plusieurs points de données. Explorons un scénario dans lequel vous avez une table avec une colonne contenant une chaîne contenant plusieurs paires clé-valeur séparées par un délimiteur.
Définition du problème
Étant donné une table avec la structure suivante :
Col1 = '123' Col2 = 'AAAAA' Col3 = 'Clent ID = 4356hy|Client Name = B B BOB|Client Phone = 667-444-2626|Client Fax = 666-666-0151|Info = INF8888877 -MAC333330554/444400800'
Votre objectif est d'extraire uniquement la valeur "Nom du client", qui dans ce cas est "B B BOB", de la colonne "Col3". Les délimiteurs séparant les paires clé-valeur sont « | » caractères pipe, et les paires clé-valeur elles-mêmes sont délimitées par le signe égal (' = ') avec des espaces blancs de début et de fin.
Solution
Pour résoudre ce problème problème en T-SQL, vous pouvez utiliser les techniques de manipulation de chaînes suivantes :
Extrait de code
Pour vos données spécifiques , vous pouvez utiliser l'extrait de code suivant pour obtenir le résultat souhaité résultat :
Select col1, col2, LTRIM(RTRIM(SUBSTRING( STUFF(col3, CHARINDEX('|', col3, PATINDEX('%|Client Name =%', col3) + 14), 1000, ''), PATINDEX('%|Client Name =%', col3) + 14, 1000))) col3 from Table01
Remarque : Vous pouvez rencontrer une différence de performances mineure lors de l'utilisation de CHARINDEX par rapport à PATINDEX pour localiser la position de départ de la clé. Cependant, les deux approches donnent généralement des résultats similaires, car leurs efficacités sont comparables.
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!