一道捆饶好久的问题,请高手帮忙
怎么写个数据库函数  
a-b |a-b |a-b |....  
1-1 |7-2 |8-3 |.....  
如何取出b最后一个值也就是3
或用什么样的查询语句可以查询出来?
------解决方案--------------------CREATE   Function dbo.f_GetStr
(
	@s 	varchar(8000),      	--包含多个数据项的字符串
	@pos 	int,            	--要获取的数据项的位置
	@split 	varchar(10)     	--数据分隔符
)RETURNS varchar(100)
AS
Begin
	IF @s IS NULL RETURN(NULL)	
	Declare @splitlen 	int
	Select @splitlen = LEN(@split + 'a') - 2
	WHILE @pos > 1 AND CHARINDEX(@split,@s+@split) > 0
		SELECT @pos=@pos-1,
			@s=STUFF(@s,1,CHARINDEX(@split,@s+@split)+@splitlen,'')
	RETURN(ISNULL(LEFT(@s,CHARINDEX(@split,@s+@split)-1),''))
End
------解决方案--------------------CREATE TABLE t
(
 ID INT IDENTITY(1,1),
 COL VARCHAR(200)
)
INSERT INTO T
  SELECT '1-1 | 7-2 | 8-3 | 4-6'
DECLARE @t TABLE  
( id INT IDENTITY(1,1) NOT NULL, COL VARCHAR(30) )
INSERT INTO @t(COL)
  SELECT TOP 200 0 FROM sysobjects
  SELECT ID,  
       [L] = LTRIM(RTRIM(LEFT(COL,CHARINDEX('-',COL)-1))),
       [R]=  LTRIM(RTRIM(STUFF(COL,1,CHARINDEX('-',COL),'')))
  FROM(
  SELECT A.ID,COL = LTRIM(RTRIM(SUBSTRING(A.COL, b.id, CHARINDEX('|',A.COL+'|',B.ID)-B.ID)))
  FROM T A,@t B
   WHERE B.ID < LEN(A.COL) AND CHARINDEX('|','|'+A.COL,B.ID) = B.ID
  ) A  
DROP TABLE T
ID          L           R          
----------- ----------- -----------  
1           1           1
1           7           2
1           8           3
1           4           6