需求:
表user
字段usermark
值 100|10|30|0|0|50|60|20|0|50|0
字段usermoney
值 50|10|30|0|0|50|60|20|0|0|30
现在要用存储过程分别取出usermark和usermoney中倒数第四个符号| |之间的值,也就是那个20的值,应该如何截取?(20是可变值,规律为只取倒数第四个| |符号之间的值)
解决方法:
/********************************
表user
字段usermark
值 100|10|30|0|0|50|60|20|0|50|0
字段usermoney
值 50|10|30|0|0|50|60|20|0|0|30
现在要用存储过程分别取出usermark和usermoney中倒数第四个符号| |之间的值,也就是那个20的值,应该如何截取?(20是可变值,规律为只取倒数第四个| |符号之间的值)
*********************************/
USE XJS
CREATE TABLE #F
(usermark varchar(800),
usermoney varchar(800)
)
delete #f
insert into #F
select '100|1030|0|0|50|60|200|50|0','50|10|30|0|0|50|60|20|0|0|30'
SELECT * FROM #F
SELECT REVERSE(usermark),REVERSE(usermoney) FROM #F
/***********反向找到第3个|的起始位置@i,找到第3个|到第4个|的长度@j*********/
DECLARE @i int
DECLARE @j int
DECLARE @k int
DECLARE @t varchar(80)
SET @i=0
SET @k=0
select @j=len(usermark) from #F
WHILE @k<3
BEGIN
SELECT @i=CHARINDEX('|',REVERSE(usermark),@i)+1 FROM #F
SET @k=@k+1
END
SELECT @j=CHARINDEX('|',REVERSE(usermark),@i) FROM #F
/************************************************************************/
SELECT @t=REVERSE(SUBSTRING(REVERSE(usermark),@i,@j-@i)) FROM #F