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_表值函数与标量函数的区别_分割字符串成单个的字符并返回表(插入到表中)的更多相关文章

  1. javascript 中 split 函数分割字符串成数组

    分割字符串成数组的方法有很多,不过使用最多的还是split函数 <script language="javascript"> str="2,2,3,5,6,6 ...

  2. SQL Server中自定义函数:用指定的分隔符号分割字符串

    微软SQL Server数据库中包含了很多内置的函数,入下图: 它们用于处理日期.数学.元数据.字符串等. 其中最为常用的就是处理字符串,里面包含了CharIndex()等函数,非常方便使用. 但是对 ...

  3. sqlserver几个好用的表值函数和标量函数

    获取逗号风格的字符串中的某一个 比如'1,2,4,5,6' 第三个就是4 CREATE function [dbo].[Get_StrArrayStrOfIndex] ( @str nvarchar( ...

  4. SQL 表值函数/标量函数

    表值函数 定义表值函数 --定义表值函数 CREATE FUNCTION GetStuScore(@Stu_ID INT ) RETURNS TABLE AS RETURN (SELECT ),[St ...

  5. SQL SERVER中用户定义标量函数(scalar user defined function)的性能问题

    用户定义函数(UDF)分类  SQL SERVER中的用户定义函数(User Defined Functions 简称UDF)分为标量函数(Scalar-Valued Function)和表值函数(T ...

  6. T-SQL编程 —— 用户自定义函数(标量函数)

    用户自定义函数 在使用SQL server的时候,除了其内置的函数之外,还允许用户根据需要自己定义函数.根据用户定义函数返回值的类型,可以将用户定义的函数分为三个类别: 返回值为可更新表的函数 如果用 ...

  7. SQL Server 性能优化之——T-SQL TVF和标量函数

    阅读导航 1. TVF(表-值行数Table-Valued Functions)         a. 创建TVF         b. 使用TVF的低性能T-SQL         c. 使用临时表 ...

  8. linux fork函数与vfork函数,exit,_exit区别

    man vfork: NAME vfork - create a child process and block parent SYNOPSIS #include <sys/types.h> ...

  9. Presto 标量函数注册和调用过程简述

    在Presto 函数开发一文中已经介绍过如何进行函数开发,本文主要讲述标量函数(Scalar Function)实现之后,是如何在Presto内部进行注册和被调用的.主要讲述标量函数是因为:三类函数的 ...

随机推荐

  1. MongoDB全球云端技术盛会MongoDB.live

    MongoDB全球云端技术盛会MongoDB.live,将于北京时间6月9日22:00正式开启,大会将以在线直播+按需学习相结合的方式,面向全球开发者.架构师等MongoDB 用户和爱好者免费开放,精 ...

  2. 【半译】扩展shutdown超时设置以保证IHostedService正常关闭

    我最近发现一个问题,当应用程序关闭时,我们的应用程序没有正确执行在IHostedService中的StopAsync方法.经过反复验证发现,这是由于某些服务对关闭信号做出响应所需的时间太长导致的.在这 ...

  3. 抛开 Spring ,你知道 MyBatis 加载 Mapper 的底层原理吗?

    原文链接:抛开 Spring ,你知道 MyBatis 加载 Mapper 的底层原理吗? 大家都知道,利用 Spring 整合 MyBatis,我们可以直接利用 @MapperScan 注解或者 @ ...

  4. [优文翻译]001.真正程序员该是什么样的(How To Be A Real Programmer)

    01.Real Programmers don't write specs -- users should consider themselves lucky to get any programs ...

  5. [工具-006] C#如何模拟发包登录

    最近接到一个任务,就是模拟某个贴吧的登录发帖功能,我的思路是通过IE浏览器的工具对登陆操作进行抓包,记录登录时候请求的URL,请求方式,请求正文等信息进行模拟的发包. 1.首先我们要到登陆页面,以摇篮 ...

  6. 应小姐姐要求,整理常用Git操作命令,她都学会了,你确定不收藏

    前言 因为个人原因,转化了部门之后已经很久没有接触过开发层级的东西了,好多东西基本都忘记了,但是新的部门有时候会用到相应的研发部的代码和文档手册,所以耳边就充斥这一句话 这个为什么下载不了?这个为什么 ...

  7. Ondemand和Interactive gonernor工作逻辑简述

    ondemand 简述: 1.采样时间:sampling_rate,单位us 2.cpu usage是仅统计最新1us的一个smaple周期,以%体现cpu busy程度. 3.一般情况下,next频 ...

  8. Java 第十一届 蓝桥杯 省模拟赛 字母重新排列

    字母重新排列 题目 问题描述 将LANQIAO中的字母重新排列,可以得到不同的单词,如LANQIAO.AAILNOQ等,注意这7个字母都要被用上,单词不一定有具体的英文意义. 请问,总共能排列如多少个 ...

  9. (Java实现) 营救

    问题 B: 营救 时间限制: 1 Sec 内存限制: 128 MB 题目描述 铁塔尼号遇险了!他发出了求救信号.距离最近的哥伦比亚号收到了讯息,时间就是生命,必须尽快赶到那里. 通过侦测,哥伦比亚号获 ...

  10. Java实现 LeetCode 458 可怜的小猪

    458. 可怜的小猪 有 1000 只水桶,其中有且只有一桶装的含有毒药,其余装的都是水.它们从外观看起来都一样.如果小猪喝了毒药,它会在 15 分钟内死去. 问题来了,如果需要你在一小时内,弄清楚哪 ...