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.
Author |
Topic |
spshindagi
Starting Member
11 Posts |
Posted - 2008-01-24 : 02:39:20
|
the following is fuction to split string array ALTER FUNCTION monthfunc (@list nvarchar(MAX), @delimiter nchar(1) = N',') RETURNS @tbl TABLE (listpos int IDENTITY(1, 1) NOT NULL, str varchar(4000) NOT NULL, nstr nvarchar(2000) NOT NULL, mth nvarchar(2000) NOT NULL, suffix nvarchar(2000) NOT NULL) ASBEGIN DECLARE @endpos int, @startpos int, @textpos int, @chunklen smallint, @tmpstr nvarchar(4000), @leftover nvarchar(4000), @mth1 nvarchar(4000), @suffix1 nvarchar(4000), @tmpval nvarchar(4000) SET @textpos = 1 SET @leftover = '' WHILE @textpos <= datalength(@list) / 2 BEGIN SET @chunklen = 4000 - datalength(@leftover) / 2 SET @tmpstr = @leftover + substring(@list, @textpos, @chunklen) SET @textpos = @textpos + @chunklen SET @startpos = 0 SET @endpos = charindex(@delimiter COLLATE Slovenian_BIN2, @tmpstr) WHILE @endpos > 0 BEGIN SET @tmpval = ltrim(rtrim(substring(@tmpstr, @startpos + 1, @endpos - @startpos - 1))) INSERT @tbl (str, nstr,mth,suffix) VALUES(@tmpval, @tmpval,@tmpval,@tmpval) SET @startpos = @endpos SET @endpos = charindex(@delimiter COLLATE Slovenian_BIN2, @tmpstr, @startpos + 1) END SET @leftover = right(@tmpstr, datalength(@tmpstr) / 2 - @startpos) SET @mth1=@leftover.Substring(0, 3).ToString(); SET @suffix1=@leftover.Remove(0, 3).ToString(); END INSERT @tbl( str,nstr,mth,suffix) VALUES ( ltrim(rtrim(@leftover)),ltrim(rtrim(@leftover)),@mth1,@suffix1) RETURNENDhow to resolve this error. Help is appreciatedlove all |
|
TG
Master Smack Fu Yak Hacker
6065 Posts |
Posted - 2008-01-24 : 13:05:12
|
I believe you are combining technologies:this:SET @mth1=@leftover.Substring(0, 3).ToString();should be:set @mth1=Substring(@leftover, 1, 3);similar issue with:@suffix1=@leftover.Remove(0, 3).ToString();Be One with the OptimizerTG |
|
|
|
|
|
|
|