标签归档:自定义函数

mssql sqlserver 新增、修改、删除自定义函数的方法分享


摘要:
下文将讲述在sqlserver数据库中新增和修改 删除自定义函数的方法,如下所示:
实验环境:sql server 2008 R2


自定义函数根据返回类型的不同,可分为:标量型函数和表值函数
标量型函数:
返回一个值的函数
表值函数:
返回一个表的函数

自定义函数举例应用:

  ---表值型函数定义
   create function dbo.fn_test(
      @a int,@b int
       )
	 returns table
	 as 
	 begin
	    declare @tmp table(keyid int,info varchar(30)) 
		 /*sql脚本*/
		  
		 return @tmp
	 end
  ---标量型函数定义
create function dbo.fn_test(
      @a int,@b int
       )
	 returns int
	 as 
	 begin
	    declare @tmp int 
		 /*sql脚本*/
		  
		 return @tmp
	 end
  

 ---修改自定义函数方法,只需将create 变更为alter 
 -----输入相关的脚本内容即可
 alter function dbo.fn_test(
      @a int,@b int
       )
	 returns int
	 as 
	 begin
	    declare @tmp int 
		 /*sql脚本*/
		  
		 return @tmp
	 end
  
  ---删除自定义函数的方法
  drop function dbo_fn_test

mssql sqlserver 字符串采用特殊字符分隔的方法分享(sql版的split函数)


摘要:
由于我们存储数据时,常喜欢将数据按照一定的格式进行叠加,然后存储在数据库中,使用数据时,希望使用行集数据进行使用,下文将讲述sql版的字符串分隔函数的使用方法
实验环境:sqlserver 2008


常见的数据表中合并数据格式如下:
1005,8888,1009,1020,
用户希望输入 以上字符串和分隔字符逗号,返回”表格数据”。
———————————————————-
由于sqlserver 2008版本中,没有原生态的split分隔函数(sqlserver 2016版本中有string_split函数),
我们需使用自定义函数,制作字符串分隔函数,达到数据分隔的目的,如下所示:

   drop function  [dbo].[sqlServerSplit] 
go

/*
创建自定义字符串分隔函数
使用 charindex substring 函数完成此功能的编写
*/
CREATE FUNCTION [dbo].[sqlServerSplit] 
( 
@inputInfo  nvarchar(800),  
@splitString nvarchar(8) 
)
RETURNS @tmp TABLE(outPutInfo nvarchar(500)) 
AS
BEGIN
-- 定义临时变量
DECLARE @tmpI int,@tempInput nvarchar(500) 
SET @tmpI=CHARINDEX(@splitString,@inputInfo)   ---获取当前字符串中分隔字符串的起始位置

WHILE(@tmpI<>0) 
BEGIN

        SET @tempInput = SUBSTRING(@inputInfo,1,@tmpI-1)  
        
        INSERT INTO @tmp(outPutInfo) VALUES(@tempInput)  

        SET @inputInfo = SUBSTRING(@inputInfo,@tmpI+1,LEN(@inputInfo)-@tmpI) 
        SET @tmpI=CHARINDEX(@splitString,@inputInfo)  
 END  
    
    /*分隔字符串最后位置数据插入*/
    SET @tempInput = @inputInfo 
    IF (LEN(@tempInput)>0) 
        INSERT INTO @tmp(outPutInfo) VALUES(@inputInfo)  
        

RETURN

END

GO


---函数测试:

SELECT * FROM dbo.[sqlServerSplit](N'猫猫,maomao365,猫猫小屋,这是一个blog,sqlserver教程网,sqlserver技巧网,',',')