Please start any new threads on our new site at https://forums.sqlteam.com. We've got lots of great SQL Server experts to answer whatever question you can come up with.

 All Forums
 SQL Server 2005 Forums
 Transact-SQL (2005)
 How to find a string between two "_"?

Author  Topic 

Sun Foster
Aged Yak Warrior

515 Posts

Posted - 2008-09-29 : 09:54:17
I have a code to create string like below format and sample:

FNAME_LNAME_DATE_ACCOUNT_CITY

RITA_RICE_051208_RRICE08_NEWYORK

How to code to get the string (Account, e.g. ERICE08) between third “_” and fourth “_”?

madhivanan
Premature Yak Congratulator

22864 Posts

Posted - 2008-09-29 : 09:59:47
http://www.sqlteam.com/forums/topic.asp?TOPIC_ID=76033

Madhivanan

Failing to plan is Planning to fail
Go to Top of Page

visakh16
Very Important crosS Applying yaK Herder

52326 Posts

Posted - 2008-09-29 : 10:04:19
create a function like this

CREATE FUNCTION ParseValues  
(@String varchar(8000),
@Delimiter char(1)
)
RETURNS @RESULTS TABLE
(ID int identity(1,1),
Val int varchar(1000) )
AS
BEGIN
DECLARE @Value varchar(100)

WHILE @String is not null
BEGIN
SELECT @Value=CASE WHEN CHARINDEX(@Delimiter,@String) >0 THEN LEFT(@String,CHARINDEX(@Delimiter,@String)-1) ELSE @String END,
@String=CASE WHEN CHARINDEX(@Delimiter,@String) >0 THEN SUBSTRING(@String,CHARINDEX(@Delimiter,@String)+1,LEN(@String)) ELSE NULL END
INSERT INTO @RESULTS (Val)
SELECT @Value
END
RETURN
END


then use it like this
DECLARE @String varchar(1000)
SET @String='RITA_RICE_051208_RRICE08_NEWYORK'
SELECT TOP 1 Val FROM
(
SELECT TOP 2 Val,ID FROM dbo.ParseValues(@String,'_') ORDER BY ID DESC
)t
ORDER BY t.ID ASC


EDIT:Tweaked as per Madhi's comments
Go to Top of Page

madhivanan
Premature Yak Congratulator

22864 Posts

Posted - 2008-09-29 : 10:10:37
Val int

should be

Val varchar(100)

then

DECLARE @String varchar(1000)
SET @String='RITA_RICE_051208_RRICE08_NEWYORK'
SELECT TOP 1 Val FROM
(
SELECT TOP 2 Val,id FROM dbo.ParseValues(@String,'_') ORDER BY ID DESC
)t
ORDER BY t.ID ASC


Madhivanan

Failing to plan is Planning to fail
Go to Top of Page

visakh16
Very Important crosS Applying yaK Herder

52326 Posts

Posted - 2008-09-29 : 10:12:24
quote:
Originally posted by madhivanan

Val int

should be

Val varchar(100)

then

DECLARE @String varchar(1000)
SET @String='RITA_RICE_051208_RRICE08_NEWYORK'
SELECT TOP 1 Val FROM
(
SELECT TOP 2 Val,id FROM dbo.ParseValues(@String,'_') ORDER BY ID DESC
)t
ORDER BY t.ID ASC


Madhivanan

Failing to plan is Planning to fail


Yup good spot
Go to Top of Page
   

- Advertisement -