2016-09-08 7 views
0

У меня есть фразы вроде этого:Как подстроить фразу в SQL?

DECLARE @helloworld NVARCHAR(100),@partHello NVARCHAR(10) 
SET @helloworld='HelloWorld=10&HelloSQL=20' 

Я хочу взять число между «=» и «&», я использовал это заявление, но это не работает ... он возвращается:

10& 

вот код, который я использовал:

DECLARE @helloworld NVARCHAR(100),@partHello NVARCHAR(10) 
SET @helloworld='HelloWorld=10&HelloSQL=20' 

SET @partHello = 
SUBSTRING(@helloworld,CHARINDEX('=',@helloworld,0),CHARINDEX('&',@helloworld,0)-CHARINDEX('=',@helloworld,0)) 
PRINT @partHello 

Я хочу, чтобы быть динамичным .. Если есть число больше 10, то он будет принимать все число. Я хочу, чтобы он начинался с '=' и заканчивался на '&'

любая помощь?

+2

Пут -1 в 3 параметра: 'CHARINDEX ('&' , @ helloworld, 0) -CHARINDEX ('=', @ helloworld, 0) - 1' –

+0

как я могу начать с номера после = ?? @ PawełDyl –

ответ

3

Попробуйте это:

SET @partHello = 
SUBSTRING(@helloworld,CHARINDEX('=',@helloworld,0)+1,CHARINDEX('&',@helloworld,0)-(CHARINDEX('=',@helloworld,0))-1) 
PRINT @partHello 
+0

Если первое число после '=' не 1 ... Я хочу сделать его динамическим, чтобы принять любое число, которое приходит после '=' –

+0

У меня есть обновленная проверка ответа сейчас –

0

Существует решение:

DECLARE @helloworld NVARCHAR(100),@partHello NVARCHAR(10) 
SET @helloworld='HelloWorld=320&HelloSQL=20' 

    SET @partHello = 
SUBSTRING(@helloworld,CHARINDEX('=',@helloworld,0)+1,CHARINDEX('&',@helloworld,0) -(CHARINDEX('=',@helloworld,0)+1)) 
PRINT @partHello 
3

Я хотел бы использовать следующее:

SELECT SUBSTRING(@helloWorld, 
    CHARINDEX('=',@helloworld,0)+1, 
    CHARINDEX('&',@helloworld,0)-CHARINDEX('=',@helloworld,0)-1)