Reputation: 11
I have string "ABCD.EFGH.IJKL.MNOP". I am looking for a sql query from which I can get
first part ("ABCD"), Second Part ("EFGH"), Third Part ("IJKL"), Fourth Part ("LMNOP") from a large data. SO performance have to be kept in mind.
Thank you
Regards, James
Upvotes: 1
Views: 4709
Reputation: 9548
Jeff Moden wrote a series of articles on this recently, complete with performance comparisons of the most popular attempts at filling this common need. See this for the latest installment and the latest rev of his DelimitedSplit8K function http://www.sqlservercentral.com/articles/Tally+Table/72993/
Upvotes: 1
Reputation: 1996
I assuming that, you are looking for MSSQL. You can do that using a user defined function which returns table variable. Try this
CREATE FUNCTION dbo.Split(@String varchar(8000), @Delimiter char(1))
returns @temptable TABLE (items varchar(8000))
as
begin
declare @idx int
declare @slice varchar(8000)
select @idx = 1
if len(@String)<1 or @String is null return
while @idx!= 0
begin
set @idx = charindex(@Delimiter,@String)
if @idx!=0
set @slice = left(@String,@idx - 1)
else
set @slice = @String
if(len(@slice)>0)
insert into @temptable(Items) values(@slice)
set @String = right(@String,len(@String) - @idx)
if len(@String) = 0 break
end
return
end
You can use this function is your SQL Queries
select * from dbo.Split('Test,Tested,To be Tested',',')
Upvotes: 0