Microsoft SQL Server 自定义函数整理大全

来源:互联网 发布:ps ef grep java 编辑:程序博客网 时间:2024/06/05 06:07

SQL SERVER中是允许有自定义函数,Microsoft SQL Server 并不将用户限制在定义为 Transact-SQL 语言一部分的内置函数上,而是允许用户创建自己的用户定义函数。

函数是由一个或多个 Transact-SQL 语句组成的子程序,可用于封装代码以便重新使用。尽管自定义函数在数据量庞大的时候,效率上有欠缺,但是在中小型数据库中,还是可以使用,现将我数据库中所有的自定义函数与大家分享,并搜集了CSDN帖子中出现的一些自定义函数进行整理测试,例如fredrickhu (小F) 、dawugui (爱新觉罗.毓华) 、happyflystone (无枪狙击手)、dobear_0922 (do熊) 、htl258 (Tony) 、Haiwer (海阔天空)、libin_ftsafe (子陌红尘[I'm 潇湘]) 、cson_cson等等C友们分享或是原创的一些函数。

 

 

01、去除字符串中的html标记及标记中的内容

02、去除字符串中连续的分割符

03、求第一个字符串中第二个串的个数

04、综合模糊查询

05、将十进制转成十六进制

06、求两个字符串中相同的汉字及字母的个数

07、生成n位随机字符串

08、取出字符串中的汉字、字母或是数字

09、根据字符分割字符串的三种写法

10、将数字转换千分位分隔形式

11、取汉字首字母的两个函数

12、根据身份证得到生日函数

13、根据身份证计算性别函数

14、将身份证的15位号码升级为18位

15、通过身份证获得户籍

16、多个数据项的字符串取指定位置字符

17、中缀算术转后缀算术表达式并计算的函数

18、人民币小写金额转大写

19、向左填充指定字符串

20、将整型数字转换为大写汉字

21、检查给定串是否存在于由区间及点集的结合内

22、根据日期返回星座

23、计算两个日期之间的工作日

24、根据年月生成日历函数

25、从第一个汉字开始分割字符串

26、过滤掉字符串中重复的字符

27、根据日期得到星期的函数

28、根据年度判断是否是闰年

29、完善SQL农历转换函数

30、SQL简繁转换函数

31、自定义函数实现位操作

32、求某段时间内星期几的天数

33、根据进舍位或四舍五入来求值

34、字符串转成16进制函数

35、去掉字段中多个带区号电话号码前面的区号

36、SQL2000/2005字符串拆分为列表通用函数

37、求字符串中汉字的个数

38、得到条形码的校验位函数

39、根据年月得到当月的天数

40、将一个正整数分解为m个2的n次方的和

41、SQL位移运算函数

42、得到汉字笔画函数

43、SQL数字转英文函数

44、全角半角转换函数

45、返回两个时间范围内的一个随机时间

46、获取元素个数的函数

47、获取指定索引的值的函数

48、根据年得到所有星期日的日期

49、生成两个时间之间的所有日期 

50、无序字符比较函数

51、在SQL SERVER中实现RSA加解密函数(第一版)

52、在SQL SERVER中实现RSA加解密函数(第二版)

53、输出指定格式的数据列

54、汉字转拼音函数 

55、数字转IP地址函数

56、对字符串进行加密解密

57、计算个人所得税函数


转载:http://blog.csdn.net/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
    计划绑定选项将用户自定义函数绑定到它所引用的数据库对象如果指定了此选项,则函数所涉及的数据库对象从此将不能被删除或修改,除非函数被删除或去掉此选项。应注意的是,要绑定的数据库对象必须与函数在同一数据库中。

(2) 创建内联表值型用户自定义函数(Inline Table-valued Functions)
其语法如下:


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

(3) 创建多声明表值型用户自定义函数
其语法如下:
 
各参数说明如下:

  • @return_variable
    一个TABLE 类型的变量,用于存储和累积返回的表中的数据行。
  • 其余参数与标量型用户自定义函数相同。
    在多声明表值型用户自定义函数的函数体中允许使用下列Transact-SQL 语句。
  • 赋值语句(Assignment statements);
  • 流程控制语句(Control-of-Flow statements);
  • 定义作用范围在函数内的变量和游标的DECLARE 语句;
  • SELECT 语句;
  • 编辑函数中定义的表变量的INSERT、 UPDATE 和DELETE 语句;
  • 在函数中允许涉及诸如声明游标、打开游标、关闭游标、释放游标这样的游标操作,对于读取游标而言,除非在FETCH 语句中使用INTO 从句来对某一变量赋值,否则不允许在函数中使用FETCH 语句来向客户端返回数据。
????????????????    此外不确定性函数(Non-deterministic functions) 不能在用户自定义函数中使用。所谓不确定性函数是指那些使用相同的调用参数在不同时刻调用得到的返回值不同的函数。这些函数如表13-3 所示(全局变量也可以视为一种函数)。


 

(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



 

0 0