2010-11-08 2 views
0

я просто редактировал вопрос, чтобы сделать его более ясным .. пожалуйста, помогитеполучает имя значение из строки с помощью TSQL

Я использую SQL Server 2008.

У меня есть столбец, содержащий следующие строки ..

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 

В следующей строке, как я могу получить значения «abc» с помощью TSQL?

результат должен быть ...

abc 

1234 
4587 
2478 
9874 
5412 

Пожалуйста, дайте мне знать.

благодаря

+0

Вы читаете это из таблицы или пытаетесь разобрать какой-либо ввод? Также вы ожидаете, что позиция abc изменится или ожидается, что это будет статический бит данных? – JonVD

+0

Вы ищете только первый параметр или все параметры в строке URL? – MattB

+0

Я не ожидаю, что положение abc изменится. –

ответ

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

вы можете использовать метод подстроки на T-SQL, но вы должны знать параметры запуска и длины. Я имею в виду, если значение строки изменится, это не сработает.