美文网首页sql server
sql server 自定义函数

sql server 自定义函数

作者: z_strive | 来源:发表于2020-04-01 09:52 被阅读0次

自定义函数(User-Defined Function)有两种,一种是标量UDF(Scalar-valued Functions)和表值UDF(Table-valued

Functions),前者只返回单个数据值,而后者则返回一个表

CREATE FUNCTIONfunction_name(@parameter_name parameter_data_type)

RETURNS date_type   --返回返回值的数据类型

[WITH ENCRYPTION]  --如果指定了encryption 则函数被加密

[AS]

BEGIN

 function_body --函数体(即 Transact-SQL 语句)

 RETURN  表达式;

END

在编写自定义函数时需要注意的:

标量函数:

1.      所有的入参前都必须加@

2.      create后的返回,单词是returns,而不是return

3.      returns后面的跟的不是变量,而是返回值的类型,如:int,char等。

4.      在begin/end语句块中,是return。

内联表格值函数:

1.      只能返回table,所以returns后面一定是TABLE

2.      AS后没有begin/end,只有一个return语句来返回特定的记录。

多语句表值函数:

1.      returns后面直接定义返回的表类型,首先是定义表名,表明前面要加@,然后是关键字TABLE,最后是表的结构。

2.      在begin/end语句块中,直接将需要返回的结果insert到returns定义的表中就可以了,在最后return时,会将结果返回。

3.      最后只需要return,return后面不跟任何变量。

例子:

ALTER function [dbo].[splitDt]

(

@SourceSqlvarchar(max),--传入参数

@StrSepratevarchar(6),

@BHvarchar(20)

)

returns @temp table(MCH varchar(100),BH varchar(20))---@ 表示局部变量。Returns返回值

as

begin

    declare@i int

    set@SourceSql = rtrim(ltrim(@SourceSql))--去除左右空格

    set@i = charindex(@StrSeprate,@SourceSql)--查找,数

    while@i >= 1---有逗号

    begin

        if len(left(@SourceSql,@i-1))>0--返回字符表达式中的字符数,值大于1个

        begin

            insert @temp values(left(@SourceSql,@i-1),@BH)

        end

        set @SourceSql=substring(@SourceSql,@i+len(@StrSeprate),len(@SourceSql)-@i)

        set @i=charindex(@StrSeprate,@SourceSql)

    end

    if@SourceSql <> ''---值是一个,没有逗号

        insert @temp values(@SourceSql,@BH)

    return

end

使用:

select mch,bh FROM splitDt(RTRIM('医疗器械第一类,中成药,化妆品,消毒品,其他,化学药制剂'),',','550640')

结果:

1

相关文章

  • SQL SERVER 自定义函数

    sql server自定义函数分三种(注意returns,需要加's'):标量值函数,内联式表值函数,多语句表值函...

  • SQL Server DATEADD() 函数

    SQL Server DATEADD() 函数 标签(空格分隔): SQL SQLServer SQL Serve...

  • sql server 自定义函数

    自定义函数(User-Defined Function)有两种,一种是标量UDF(Scalar-valued Fu...

  • sql server 自定义函数

    函数分为系统函数,自定义函数。 系统函数 如聚合函数,max(),min() 等等系统提供的函数。 自定义函数 自...

  • 一些MySQL的数值函数干货

    早在 2021 年 5 月,我们就探讨了 SQL Server 的重要的 SQL Server 函数[https:...

  • SQL SERVER函数

    一、字符转换函数 1、ASCII() 返回字符表达式最左端字符的ASCII 码值。在ASCII()函数中,纯数字的...

  • (4)SparkSQL中如何定义UDF和使用UDF

    Spark SQL中用户自定义函数,用法和Spark SQL中的内置函数类似;是saprk SQL中内置函数无法满...

  • 自定义函数

    概述: 创建不带参数的自定义函数: 创建带参数的自定义函数: 创建具有复合结构函数体的自定义函数: sql命令结束...

  • SQL Server 设置默认数据库

    STEP 1 调用系统函数 查看SQL Server的当前用户名 NOTE : 系统函数的调用跟sql语句执行一样...

  • Flink自定义函数实现

    鉴于自定义函数函数在SQL中的强大语义,在SQL中有十分广泛的应用。Flink在其Table/SQL API中同样...

网友评论

    本文标题:sql server 自定义函数

    本文链接:https://www.haomeiwen.com/subject/eumtphtx.html