2024-11-28 09:47:46
2024-11-28 12:00:20
谢谢,可能我没有描述清楚,也有不是固定长度的 比如说人数是少于10人的 ,我现在如果就只要人数 能剔出来吗
只要人数的话只能用循环这样写了﹐可以能有更简洁的方法﹐但能力有限哈
DECLARE @S VARCHAR(100)
DECLARE @NEXT INT
DECLARE @STEMP VARCHAR(100)
SET @S='收2010级20人3500元30人4000元10人6000元80人6000元存入'
SET @NEXT=1
WHILE @NEXT<=LEN(@S)-LEN(REPLACE(@S,'人',''))
begin
IF @NEXT=1
BEGIN
SELECT SUBSTRING(@S,PATINDEX('%级%',@S)+1,PATINDEX('%人%',@S)-PATINDEX('%级%',@S))
SET @STEMP=STUFF(@S,PATINDEX('%人%',@S),1,',')
END
ELSE
BEGIN
SELECT SUBSTRING(@STEMP,PATINDEX('%元%',@STEMP)+1,PATINDEX('%人%',@STEMP)-PATINDEX('%元%',@STEMP))
SET @STEMP=STUFF(@STEMP,PATINDEX('%人%',@STEMP),1,',')
SET @STEMP=STUFF(@STEMP,PATINDEX('%元%',@STEMP),1,',')
END
set @NEXT=@NEXT+1
end
效果