الحصول على قيمة الاسم من سلسلة باستخدام TSQL

StackOverflow https://stackoverflow.com/questions/4128864

  •  29-09-2019
  •  | 
  •  

سؤال

لقد قمت للتو بتحرير السؤال لجعله أكثر وضوحًا .. الرجاء المساعدة

أنا أستخدم 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

أخبرونى من فضلكم.

شكرًا

هل كانت مفيدة؟

المحلول

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

نصائح أخرى

يمكنك استخدام طريقة التسوق على T-SQL ، ولكن يجب أن تعرف معلمات البدء والطول. أعني إذا تغيرت قيمة السلسلة ، فلن تعمل.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top