UDF_表值函数与标量函数的区别_分割字符串成单个的字符并返回表(插入到表中)
UDF_区别_分割字符串成单个的字符并返回表(插入到表中)
/*
SQL表值函数和标量值函数的区别
实验环境:SQL Server 2014,参考maomao365有改编
在sqlserver中存储过程中,我们经常需要编写一个sql函数供存储过程使用,加强代码的复用性, 存储过程中函数有两种:
1.返回一张数据表的sql函数,我们称之为“表值函数”
2.返回一个指定数值的sql函数,我们称之为“标量值函数”
那么这两种sql函数,最大和唯一的区别为:返回类型不一样
*/
---------------------------------------------------------------------------------------------
--定义了一个表值函数,此函数可以返回符合id等于参数的所有行信息
--DROP FUNCTION fn_testReturnTable
GO
create function fn_testReturnTable
(
@id int
)
RETURNS @t TABLE
(
id int,Name sysname
)
AS
BEGIN
insert into @t(id,name)
select id,name from sysobjects where id =@id
RETURN
END
/*
查看是否执行在该库下,有时切换数据库以后,执行到其他库下了
--sp_helptext fn_testReturnTable
SELECT * FROM fn_testReturnTable(5) */ ---------------------------------------------------------------------------------------------
--定义了一个标量值函数,此函数可以返回符合id等于参数的所有行的name信息。
Create FUNCTION fn_testReturnTable
(
@id int
)
RETURNS nvarchar(256)
AS
BEGIN
declare @name nvarchar(256)
select @name=name from sysobjects where id =@id
return @name
END /*
SELECT * FROM fn_testReturnTable(5)
*/
---------------------------------------------------------------------------------------------
--函数功能:拆分字符串为单个字符,放入数据表中,并返回
/*
将字符串分解为单个字符串的方法
*/
--drop function fn_SplitStringToCharReturnTable
GO
CREATE FUNCTION dbo.fn_SplitStringToCharReturnTable
(
@str NVARCHAR(MAX)
)
RETURNS @tmp TABLE
(
--[t] [NVARCHAR](2) NULL
[tb_ReturnTable] [NVARCHAR](2) NULL
)
AS
BEGIN
DECLARE @p INT=1,@strlen INT=LEN(@str) --@p计数器,@strlen,函数中参数的长度
WHILE @p <= @strlen
BEGIN
INSERT @tmp VALUES(substring(@str,@p,1))
SET @p = @p + 1
END
RETURN
END
/*
调用
SELECT [tb_ReturnTable] from dbo.fn_SplitStringToCharReturnTable('GraceLin is a beautiful girl and she lives in ZS.')
*/
--大致的写法就是这种结构(此时暂时称为语法吧)
--表值型函数定义
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
UDF_表值函数与标量函数的区别_分割字符串成单个的字符并返回表(插入到表中)的更多相关文章
- javascript 中 split 函数分割字符串成数组
分割字符串成数组的方法有很多,不过使用最多的还是split函数 <script language="javascript"> str="2,2,3,5,6,6 ...
- SQL Server中自定义函数:用指定的分隔符号分割字符串
微软SQL Server数据库中包含了很多内置的函数,入下图: 它们用于处理日期.数学.元数据.字符串等. 其中最为常用的就是处理字符串,里面包含了CharIndex()等函数,非常方便使用. 但是对 ...
- sqlserver几个好用的表值函数和标量函数
获取逗号风格的字符串中的某一个 比如'1,2,4,5,6' 第三个就是4 CREATE function [dbo].[Get_StrArrayStrOfIndex] ( @str nvarchar( ...
- SQL 表值函数/标量函数
表值函数 定义表值函数 --定义表值函数 CREATE FUNCTION GetStuScore(@Stu_ID INT ) RETURNS TABLE AS RETURN (SELECT ),[St ...
- SQL SERVER中用户定义标量函数(scalar user defined function)的性能问题
用户定义函数(UDF)分类 SQL SERVER中的用户定义函数(User Defined Functions 简称UDF)分为标量函数(Scalar-Valued Function)和表值函数(T ...
- T-SQL编程 —— 用户自定义函数(标量函数)
用户自定义函数 在使用SQL server的时候,除了其内置的函数之外,还允许用户根据需要自己定义函数.根据用户定义函数返回值的类型,可以将用户定义的函数分为三个类别: 返回值为可更新表的函数 如果用 ...
- SQL Server 性能优化之——T-SQL TVF和标量函数
阅读导航 1. TVF(表-值行数Table-Valued Functions) a. 创建TVF b. 使用TVF的低性能T-SQL c. 使用临时表 ...
- linux fork函数与vfork函数,exit,_exit区别
man vfork: NAME vfork - create a child process and block parent SYNOPSIS #include <sys/types.h> ...
- Presto 标量函数注册和调用过程简述
在Presto 函数开发一文中已经介绍过如何进行函数开发,本文主要讲述标量函数(Scalar Function)实现之后,是如何在Presto内部进行注册和被调用的.主要讲述标量函数是因为:三类函数的 ...
随机推荐
- iOS 数组遍历过程中移除
参考:https://blog.csdn.net/u011619283/article/details/53135502 常见crash 原因是数组在移除元素后,继续遍历会有越界问题. 解决思路: 遍 ...
- web项目——javax.servlet.ServletException: Circular view path [registerForm]
报错: 控制台输出: 三月 21, 2019 10:12:32 上午 org.springframework.web.servlet.PageNotFound noHandlerFound 警告: N ...
- Python操作Word与Excel并打包
安装模块 # Word操作库 pip install docx # Excel操作库 pip install openpyxl # 打包exe工具 pip install pyinstaller Wo ...
- Intellij IDEA 2020.1.1 破解 永久有效 亲测100%成功
申明:本教程 WebStorm 破解补丁.激活码均收集于网络,请勿商用,仅供个人学习使用,如有侵权,请联系作者删除. 前言 作为一个有强迫症的码农,怎么能忍受自己的开发工具跟不上潮流呢?笔者以前一直用 ...
- [安卓基础]011存储数据(中)——sqlite语法介绍
*:first-child { margin-top: 0 !important; } body > *:last-child { margin-bottom: 0 !important; } ...
- django-模型层(ORM语法)
今日内容概要(重要) 模型层(ORM语法):跟数据库打交道的 单表查询(增删改查) 常见的十几种查询方法 神奇的双下划线查询 多表操作 外键字段的增删改查 跨表查询(重点) 子查询 联表查询 今日内容 ...
- Ratel源码-C/S事件梳理
一.Ratel介绍 Ratel 是一个可以在命令行中玩斗地主的项目,可以使用小巧的jar包在拥有JVM环境的终端中进行游戏,同时支持人人对战和人机对战两种模式,丰富你的空闲时间! 二.玩法Demo 三 ...
- Rocket - decode - 几个问题
https://mp.weixin.qq.com/s/pMsK_E4mQrm3QXdnp7nDPQ 讨论指令解码部分遗留的几个问题. 1. 最小项与蕴含项之间的关系 参考链接: htt ...
- UML ——区分类图中的几种关系.md
目录 关联关系 (association): 聚合关系 (aggregation): 合成关系 (composition): 依赖关系 (dependency): 总结: 原文地址 http://ww ...
- 面试题: MySQL 索引失效的10大原因
个人博客网:https://wushaopei.github.io/ (你想要这里多有) 1.建表: CREATE TABLE staffs ( id INT PRIMARY KEY AUTO_ ...