SQL SERVER中是允许有自定义函数,Microsoft SQL Server 并不将用户限制在定义为 Transact-SQL 语言一部分的内置函数上,而是允许用户创建自己的用户定义函数。
函数是由一个或多个 Transact-SQL 语句组成的子程序,可用于封装代码以便重新使用。尽管自定义函数在数据量庞大的时候,效率上有欠缺,但是在中小型数据库中,还是可以使用,现将我数据库中所有的自定义函数与大家分享,并搜集了优快云帖子中出现的一些自定义函数进行整理测试,例如fredrickhu (小F) 、dawugui (爱新觉罗.毓华) 、happyflystone (无枪狙击手)、dobear_0922 (do熊) 、htl258 (Tony) 、Haiwer (海阔天空)、libin_ftsafe (子陌红尘[I'm 潇湘]) 、cson_cson等等C友们分享或是原创的一些函数。
02、去除字符串中连续的分割符
04、综合模糊查询
05、将十进制转成十六进制
07、生成n位随机字符串
10、将数字转换千分位分隔形式
11、取汉字首字母的两个函数
12、根据身份证得到生日函数
13、根据身份证计算性别函数
15、通过身份证获得户籍
18、人民币小写金额转大写
19、向左填充指定字符串
20、将整型数字转换为大写汉字
22、根据日期返回星座
23、计算两个日期之间的工作日
24、根据年月生成日历函数
26、过滤掉字符串中重复的字符
27、根据日期得到星期的函数
28、根据年度判断是否是闰年
29、完善SQL农历转换函数
30、SQL简繁转换函数
31、自定义函数实现位操作
32、求某段时间内星期几的天数
34、字符串转成16进制函数
37、求字符串中汉字的个数
38、得到条形码的校验位函数
39、根据年月得到当月的天数
41、SQL位移运算函数
42、得到汉字笔画函数
43、SQL数字转英文函数
44、全角半角转换函数
46、获取元素个数的函数
47、获取指定索引的值的函数
50、无序字符比较函数
51、在SQL SERVER中实现RSA加解密函数(第一版)
52、在SQL SERVER中实现RSA加解密函数(第二版)
53、输出指定格式的数据列
54、汉字转拼音函数
55、数字转IP地址函数
56、对字符串进行加密解密
57、计算个人所得税函数
转载:http://blog.youkuaiyun.com/maco_wang/article/details/6261639
查询数据库中所有的自定义函数:
select * FROM sys.objects where type = 'fn'
查询函数定义:
sp_helptext functionName;
eg: sp_helptext testFun
错误提示: 不是可以识别的 内置函数名称
sql server 中执行自定义函数的时候回出现这个问题。
解决方案:
在自定义函数前加上所有者,如:dbo.
创建用户自定义函数
SQL Server 2000 为三种类型的用户自定义函数提供了不同的命令创建格式。
(1) 创建标量型用户自定义函数(Scalar functions) 其语法如下:
各参数说明如下:
- owner_name
指定用户自定义函数的所有者。 - function_name
指定用户自定义函数的名称。database_name.owner_name.function_name 应是惟一的。 - @parameter_name
定义一个或多个参数的名称。一个函数最多可以定义1024 个参数每个参数前用“@”符号标明。参数的作用范围是整个函数。参数只能替代常量,不能替代表名、列名或其它数据库对象的名称。用户自定义函数不支持输出参数。 - scalar_parameter_data_type
指定标量型参数的数据类型,可以为除TEXT、 NTEXT、 IMAGE、 CURSOR、TIMESTAMP 和TABLE 类型外的其它数据类型。 - scalar_return_data_type
指定标量型返回值的数据类型,可以为除TEXT、 NTEXT、 IMAGE、 CURSOR、TIMESTAMP 和TABLE 类型外的其它数据类型。 - scalar_expression
指定标量型用户自定义函数返回的标量值表达式。 - function_body
指定一系列的Transact-SQL 语句,它们决定了函数的返回值。 - ENCRYPTION
加密选项。让SQL Server 对系统表中有关CREATE FUNCTION 的声明加密,以防止用户自定义函数作为SQL Server 复制的一部分被发布(Publish) 。 - SCHEMABINDING
计划绑定选项将用户自定义函数绑定到它所引用的数据库对象如果指定了此选项,则函数所涉及的数据库对象从此将不能被删除或修改,除非函数被删除或去掉此选项。应注意的是,要绑定的数据库对象必须与函数在同一数据库中。
其语法如下:

各参数说明如下:
- TABLE
指定返回值为一个表。 - select-stmt
单个SELECT 语句,确定返回的表的数据。
其余参数与标量型用户自定义函数相同。
其语法如下:

各参数说明如下:
- @return_variable
一个TABLE 类型的变量,用于存储和累积返回的表中的数据行。 - 其余参数与标量型用户自定义函数相同。
在多声明表值型用户自定义函数的函数体中允许使用下列Transact-SQL 语句。 - 赋值语句(Assignment statements);
- 流程控制语句(Control-of-Flow statements);
- 定义作用范围在函数内的变量和游标的DECLARE 语句;
- SELECT 语句;
- 编辑函数中定义的表变量的INSERT、 UPDATE 和DELETE 语句;
- 在函数中允许涉及诸如声明游标、打开游标、关闭游标、释放游标这样的游标操作,对于读取游标而言,除非在FETCH 语句中使用INTO 从句来对某一变量赋值,否则不允许在函数中使用FETCH 语句来向客户端返回数据。



(4) 用Enterprise Manager 创建用户自定义函数
用Enterprise Manager 创建用户自定义函数的方法是:在Enterprise Manager 中选择要创建用户自定义函数的数据库。在数据库对象“User Defined Functions” 上单击右键,从开始菜单中选择“New User Defined Function” 选项,就会出现如图13-4 所示的定义用户自定义函数属性对话框。可以在其中指定要定义的函数的名称,并编辑函数的脚本。单击“OK”按钮,则添加用户自定义函数对象到数据库中。

图13-4 定义用户自定义函数属性对话框
13.13.2 修改和删除用户自定义函数
在Enterprise Manager 中选择要进行改动的用户自定义函数,单击右键从快捷菜单中选择“属性”选项,则会出现与图13-4 类似的修改用户自定义函数结构对话框。可以修改用户自定义函数的函数体、参数等。从快捷菜单中选择“删除”选项,则可删除用户自定义函数。
用ALTER FUNCTION 命令也可以修改用户自定义函数。此命令的语法与CREATEFUNCTION 相同,因此使用ALTER FUNCTION 命令其实相当于重建了一个同名的函数,用起来不大方便。
另外,可以用DROP FUNCTION 命令删除用户自定义函数,其语法如下:
DROP FUNCTION { [ owner_name. ] function_name } [ ,...n ]
例13-22: 删除用户自定义函数chiefinfo
drop function chiefinfo
转载:http://www.alixixi.com/Dev/DB/MSSQL/2007/2007070259047.html