功能说明:
要求某个字符串如:1,2,3,4 或者1.11,2.1,4的和
1、函数创建
USE [wqq]
GO
/****** Object: UserDefinedFunction [dbo].[getSum] Script Date: 07/17/2013 22:04:05 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
--获取如字符串"1,2,3,4"中以逗号隔开的数组的长度
ALTER FUNCTION [dbo].[getSum]
(
@str nvarchar(max),--字符串
@ch nvarchar(100)--分隔符
)
RETURNS decimal(18,2)
AS
BEGIN
declare @sum decimal(18,2)
declare @location int --当前位置 循环条件
declare @start int --记录开始取字符串的初始位置
declare @len int --@ch的长度
declare @amount decimal(18,2)--暂存数组中的一个值
set @str=ISNULL(@str,'')--如果@str为null那么设为 空字符串
if(@str='')--如果为空字符串那么返回值为null
begin
return null
end
--循环取值求和
set @sum=0
set @str=@str+@ch
set @len=LEN(@ch)
set @start=1
set @location=CHARINDEX(@ch,@str)
if @location=0
begin
set @location=LEN(@str)+1
end
while @location!=0
begin
set @amount=SUBSTRING(@str,@start,@location-@start)
set @sum=@sum+@amount
set @start=@location+@len
set @location=CHARINDEX(@ch,@str,@start)
end
return @sum
END
2、测试
select wqq.dbo.getSum('1.1111****2.0****832389.11','****')
select wqq.dbo.getSum('1.1,2,4',',')
其中wqq是数据库名称
3、测试结果