知识在于积累(.NET之路……)

导航

SQL SERVER自定义函数实例(一)

SQL SERVER自定义函数。功能如下:
输入两个参数@param1、@param2,这两个参数的类型均为varchar。
在表里,这两个字段的值有很多种形式,比如:“¥10.33”、“¥10.33元”、“¥10.33万元”、“一串文本”、NULL、空字符串

我要计算@param1/@param2
在计算之前我先进行数据判断。即只有“¥10.33”、“¥10.33元”、“¥10.33万元”这三种形式的数据方可参与计算,但在计算之前,又得进行数据提取,如提取10.33来进前计算,但如果有“万元”,则该数据要先*10000,化为元才能参加计算。

最后返回一个varchar型的值.

实现代码如下:

代码
1 drop function FuDongRV
2  go
3  create FUNCTION FuDongRV (@param1 varchar(200),@param2 varchar(MAX))
4  RETURNS varchar(200)
5  AS
6 BEGIN
7 DECLARE @rt varchar(200)
8
9 if charindex('',@param1,1)=1 and charindex('',@param2,1)=1
10 begin
11
12 set @param1=replace(@param1,'','')
13 set @param2=replace(@param2,'','')
14
15 if charindex('万元',@param1,2)>0
16 set @param1=replace(@param1,'万元','')*10000.0
17 else
18 set @param1=replace(@param1,'','')
19 if charindex('万元',@param2,2)>0
20 set @param2=replace(@param2,'万元','')*10000.0
21 else
22 set @param2=replace(@param2,'','')
23
24 if ISNUMERIC (@param1) =1 and ISNUMERIC(@param2)=1
25 set @rt=(convert(numeric(10,4), @param1 )-convert(numeric(10,4), @param2 ))/convert(numeric(10,4), @param2 )*100
26 end
27 RETURN(@rt)
28 END
29

posted on 2010-04-09 18:19  汤尼  阅读(557)  评论(0)    收藏  举报