Maison >base de données >tutoriel mysql >Comment extraire des valeurs spécifiques de chaînes délimitées dans Transact-SQL ?
Lorsque vous traitez des valeurs de chaîne complexes dans une table, il est souvent nécessaire d'extraire des informations spécifiques. Ceci peut être réalisé en utilisant des délimiteurs pour définir la structure de la chaîne.
Un tel scénario est illustré par un tableau avec une colonne contenant une chaîne comme :
Col3 = 'Clent ID = 4356hy|Client Name = B B BOB|Client Phone = 667-444-2626|Client Fax = 666-666-0151|Info = INF8888877 -MAC333330554/444400800'
Ici, nous avons délimiteurs spécifiques séparant les paires clé-valeur : '|' pour délimiter les colonnes et '= ' (y compris les espaces) pour séparer les clés et les valeurs. L'objectif est d'extraire la valeur 'Client Name', dans ce cas 'B B BOB'.
Pour y parvenir, une combinaison de fonctions de manipulation de chaînes et d'instructions conditionnelles peut être utilisée. Une approche consiste à utiliser les fonctions CHARINDEX ou PATINDEX pour localiser la position de la valeur souhaitée dans la chaîne.
SELECT col1, col2, LTRIM(RTRIM(SUBSTRING( STUFF(col3, CHARINDEX('|', col3, PATINDEX('%|Client Name =%', col3) + 14), 1000, ''), PATINDEX('%|Client Name =%', col3) + 14, 1000))) FROM Table01
Dans cette requête, PATINDEX est utilisé pour trouver la position de départ de 'Client Name =', suivi en ajoutant 14 pour sauter cette portion. Ensuite, CHARINDEX est utilisé pour trouver la position du prochain « | ». Enfin, la fonction SUBSTRING extrait la valeur souhaitée entre ces positions, et LTRIM et RTRIM sont utilisés pour supprimer les espaces de début ou de fin.
Il convient de noter que les fonctions spécifiques utilisées pour cette tâche peuvent varier en fonction de la complexité. de la ficelle et le résultat souhaité.
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!