浅谈表值函数和标量值函数
来源:互联网 发布:留存统计最高效的算法 编辑:程序博客网 时间:2024/06/03 13:51
表值函数有两种形式:
1.内联表值函数
Create FUNCTION Funtion_name( --这里定义传入参数以及类型)RETURNS TABLEASRETURN( --这里直接写查询语句,返回结果就是查询语句的结果集)GO
示例:
CREATE FUNCTION F_BConversion( @NUM1 INT, @NUM2 INT)RETURNS TABLEASRETURN( SELECT @NUM1+@NUM2 Addition,@NUM1-@NUM2 Subtration,@NUM1*@NUM2 Multiplication,@NUM1/@NUM2 Division)GO
这个函数通过传入两个数字分别计算这两个数字加减乘除的结果,表值函数的使用调用方式就相当于表一样,可以直接select * from,也可以和其他表做关联, 只不过后面多个传入参数罢了!
2.多语句表值函数
CREATE FUNCTION Funtion_name( --这里定义传入参数及类型)RETURNS@table_name TABLE( --这里定义@table_name的列名)ASBEGIN --这里写sql语句并且将最终需要返回的结果集塞到@table_name 这张表里面 RETURN ENDGO
示例:
ALTER FUNCTION F_TConversion( @NUM INT)RETURNS@t_table TABLE( [Binary] varchar(64), Octal varchar(16), Hexadecimal varchar(8))ASBEGIN DECLARE @RESULT2 VARCHAR(500)='',@RESULT8 VARCHAR(500)='',@RESULT16 VARCHAR(500)=''; WITH CTE AS( SELECT @NUM/2 D2,@NUM%2 S2,@NUM/8 D8,@NUM%8 S8,@NUM/16 D16,@NUM%16 S16,1 [INDEX] UNION ALL SELECT D2/2 , D2%2,D8/8 , D8%8,D16/16 , D16%16,[INDEX]+1 FROM CTE WHERE D2>0 ) SELECT @RESULT2+=CAST(S2 AS VARCHAR(1)) ,@RESULT8+=CASE WHEN D8=0 AND S8=0 THEN '' ELSE CAST(S8 AS VARCHAR(1)) END ,@RESULT16+=CASE WHEN D16=0 AND S16=0 THEN '' ELSE CASE CAST(S16 AS VARCHAR(5)) WHEN '10' THEN 'A' WHEN '11' THEN 'B' WHEN '12' THEN 'C' WHEN '13' THEN 'D' WHEN '14' THEN 'E' WHEN '15' THEN 'F' ELSE CAST(S16 AS VARCHAR(5)) END END FROM CTE ORDER BY [INDEX] DESC INSERT INTO @t_table SELECT @RESULT2,@RESULT8,@RESULT16 RETURN ENDGO
这个函数是根据我前段时间写的一个关于进制转换的列子改编的,这里通过传入一个十进制的数字,分别返回对应的二进制、八进制、十六进制。
标量值函数:
CREATE FUNCTION function_name(--这里定义传入参数及类型)RETURNS --这里需要定义返回值的类型ASBEGIN--定义返回值--写sql逻辑--返回返回值ENDGO
示例:
CREATE FUNCTION F_Conversion( @NUM INT, @TYPE INT)RETURNS VARCHAR(100)ASBEGIN DECLARE @RESULT VARCHAR(500)=''; WITH CTE AS( SELECT @NUM/@type D,@NUM%@type S,1 [INDEX] UNION ALL SELECT D/@type , D%@type,[INDEX]+1 FROM CTE WHERE D>0 ) SELECT @RESULT+=CASE CAST(S AS VARCHAR(5)) WHEN '10' THEN 'A' WHEN '11' THEN 'B' WHEN '12' THEN 'C' WHEN '13' THEN 'D' WHEN '14' THEN 'E' WHEN '15' THEN 'F' ELSE CAST(S AS VARCHAR(5)) END FROM CTE ORDER BY [INDEX] DESC RETURN @RESULTENDGO
这个函数传入两个参数都是int型,分别是整数和返回的进制类型,这个例子将正整数10转换成对应的二进制。
阅读全文
2 0
- 浅谈表值函数和标量值函数
- 表值函数和标量值函数
- 表值函数和标量值函数
- SQL表值函数和标量值函数的区别
- SQL标量值函数和表值函数
- SQL表值函数和标量值函数的区别
- SQL表值函数和标量值函数的区别
- sqlserver中的表值函数和标量值函数
- sqlserver中的表值函数和标量值函数
- sqlserver中的表值函数和标量值函数
- sql server表值函数和标量函数
- 表值函数,标量值函数详解
- SQL 标量函数&表值函数
- 标量值函数执行
- 标量值函数-1
- sql 标量值函数
- SQL_标量值函数
- SQL函数表值函数标量值函数的区别
- Spring AOP事务管理(使用切面把事务管理起来)
- 并查集
- Android中保存图片到本地功能实现
- VS保存并生成解决方案
- 计算几何基本板子(待补)
- 浅谈表值函数和标量值函数
- VUE+WebPack游戏设计:实现两张扑克牌的逐对厮杀特效
- oracle 去空格函数未生效,发现ASCII值为49824的字符
- 阿里云Centos系统下服务器Nginx+PHP+MySql安装配置
- 查看是否存在某个class类名 原生JS添加类名 删除类名
- clearfix清除浮动闭合容器之:after与:before
- 图片上传到服务器,存储路径和查看图片的设置
- java 剑指offer 第二题:请实现一个函数,将一个字符串中的空格替换成“%20”。例如,当字符串为We Are Happy.则经过替换之后的字符串为We%20Are%20Happy。
- 合并真机和模拟器的framework的可执行文件