2010-11-08 6 views
0

Je vient de modifier la question pour le rendre plus clair .. s'il vous plaît aiderobtenir la valeur du nom d'une chaîne à l'aide TSQL

J'utilise SQL Server 2008.

J'ai une colonne contenant les chaînes suivantes ..

http://www.microsoft.com?abc=1234&def=567&ghi=891 
http://www.microsoft.com?abc=4587&def=567&ghi=891 
http://www.microsoft.com?abc=2478&def=567&ghi=891 
http://www.microsoft.com?abc=9874&def=567&ghi=891 
http://www.microsoft.com?abc=5412&def=567&ghi=891 

Dans la chaîne suivante, comment puis-je obtenir les valeurs de "abc" en utilisant TSQL?

le résultat devrait être ...

abc 

1234 
4587 
2478 
9874 
5412 

S'il vous plaît laissez-moi savoir.

grâce

+0

Est-ce que vous lisez ceci à partir d'une table ou que vous essayez d'analyser certaines entrées? Aussi, vous attendez-vous à ce que la position de abc change ou est-ce qu'on s'attend à ce que ce soit un bit statique de données? – JonVD

+0

Recherchez-vous uniquement le premier paramètre ou tous les paramètres de la chaîne d'URL? – MattB

+0

Je ne m'attends pas à la position de abc à changer. –

Répondre

3
declare @x varchar(100) 
set @x = 'http://www.microsoft.com?abc=1234&def=567&ghi=891' 

declare @param varchar(100) 

set @param = 'abc=' 
select SUBSTRING(@x, charindex(@param, @x)+LEN(@param), CHARINDEX('&', @x+'&', charindex(@param, @x)) - CHARINDEX(@param, @x)-LEN(@param)) as abc 

set @param = 'def=' 
select SUBSTRING(@x, charindex(@param, @x)+LEN(@param), CHARINDEX('&', @x+'&', charindex(@param, @x)) - CHARINDEX(@param, @x)-LEN(@param)) as def 

set @param = 'ghi=' 
select SUBSTRING(@x, charindex(@param, @x)+LEN(@param), CHARINDEX('&', @x+'&', charindex(@param, @x)) - CHARINDEX(@param, @x)-LEN(@param)) as ghi 
0

vous pouvez utiliser la méthode sur substring t-sql, mais vous devez connaître les paramètres de début et de longueur. Je veux dire que si la valeur de la chaîne change, cela ne fonctionnera pas.

Questions connexes