首页 > 数据库 >012 数据库学习笔记--自定义函数

012 数据库学习笔记--自定义函数

时间:2023-06-12 15:36:08浏览次数:51  
标签:varchar 函数 自定义 -- age 012 student select

自定义函数:根据自己的需要,自定义一些函数

分类:标量函数、内嵌表值函数、多声明表值函数

  • 标量函数:
    • 对单一值的操作,返回单一值;
    • 包含 begin end
    • 创建的时候,指定了函数所有体,调用时也必须指定函数所有者
    • 调用时,如果函数中指定了默认值,调用的时候,可使用默认值default代替
    • 在语法上 returns 之后为返回值类型,含begin end  ;最后return 返回值
  • 内嵌表值函数:
    • 参数话的试图,返回的是一个表;
    • 没有 begin end 包括起来
  • 多声明表值函数:
    • 返回的也是一个表,包含 begin end 函数体;
    • 返回的表数据由函数体重的语句插入的;
    • 可多次查询,可以多次筛选与合并,弥补了内嵌表值函数的不足;

标量函数:

--语法
create function [函数的所有者].函数名(标量参数 [as] 标量参数类型 [=默认值])
 returns 标量返回值类型
 begin
     函数体(即 Transact-SQL 语句)
--注,不可以有修改数据的操作 return 变量/标量表达式 end

示例: 

--------------------标量函数--------------------
--示例一:按照指定分隔符进行分割,返回分割后的个数
create function GetStrCountBySplitchar
(
	@originlStr varchar(500), --要分割的字符串
	@split		varchar(10)  --分隔符
)
returns int
as
begin
	declare @location int,--定义起始位置
			@start    int,--定义从第几个开始
			@length	  int;--定义变量,用于接收计算元素的个数
	set @originlStr=ltrim(rtrim(@originlStr))--去掉左右两边的空格
	set @location=charindex(@split,@originlStr) --分割符号在字符串中第一次出现的位置(索引从1开始计数)
	set @length=1
	while @location<>0
	begin
		set @start=@location+1
		set @location=charindex(@split,@originlStr,@start)
		set @length=@length+1
	end
	return @length
end
go
select dbo.GetStrCountBySplitchar('腹部彩超,腹部B超,腹部平扫',',') as 检查项目数量 --返回检查项目个数
go

--示例二  根据学生名称获取学生信息
--CAST(@student_age AS varchar)
--CONVERT(varchar,2) 
--标量函数,返回单一值 查询使用
create function GetStudentByName
(
	@student_name varchar(100) 
)
returns varchar(100)
-- with encryption
as
begin 
	declare @student_sex varchar(100), @student_age int,@stuInfo varchar(200)
	select @student_sex = student_sex,@student_age=student_age from student where student_name=@student_name
	--select赋值  等价于set 
	select @stuInfo = @student_name +','+@student_sex+','+ CONVERT(varchar,@student_age)-- CAST(@student_age AS varchar)
	return @stuInfo 
end
go

--select * from [dbo].[student]
--调用自定义函数
select [dbo].[GetStudentByName]('kunkun') as 学生信息
go

--示例三 使用默认值
create function GetStudentByNameOrDefault
(
	@student_name varchar(100) ='kunkun'
)
returns varchar(100)
-- with encryption
as
begin 
	declare @student_sex varchar(100), @student_age int,@stuInfo varchar(200)
	select @student_sex = student_sex,@student_age=student_age from student where student_name=@student_name
	--select赋值  等价于set 
	select @stuInfo = @student_name +','+@student_sex+','+ CONVERT(varchar,@student_age)-- CAST(@student_age AS varchar)
	return @stuInfo 
end
go

select * from [dbo].[student]
--调用自定义函数 + 使用默认值调用
select [dbo].GetStudentByNameOrDefault(default) as 学生信息

  

 

 

 

 

 

 

 

 

 

 

 

 

 

 

  

标签:varchar,函数,自定义,--,age,012,student,select
From: https://www.cnblogs.com/YYkun/p/17475125.html

相关文章

  • DevOps是什么?能够你的团队带来什么?
    最近几年"DevOps"这个关键词经常出现在项目开发当中,特别是随着微服务/容器/cloud在项目中的大范围应用,你不想知道都很难。作为一个伴随CI/CD到DevOps一路走来的工程师,我将分几个部分漫话DevOps以及相关的概念,作为软件开发工程师,你需要知道并且开始践行DevOps,它应该成为你职业素养......
  • K8S-卷
    一、持久卷(PresistenceVolumes)1.介绍PersistentVolume(PV)是集群中由管理员提供的一段存储。它是集群中的资源,就像节点是集群资源一样。PV持久卷和普通的Volume一样,也是使用卷插件来实现的,只是它们拥有独立于任何使用PV的Pod的生命周期。这个API对象捕获存储实现的细......
  • 快速创建Jenkins Job
    JenkinsJob类型1.Freestyleproject这个是jenkins的基础功能,可以用它来执行各种构建任务,他只能构建在一个电脑上,如果没有太多的需求,这个job基本够用了,它包含了所有基础功能.2.Pipeline真实的工作环境有很多job,比如先编译,然后执行静态代码检查、单元测试、然后部署服务器、......
  • 基本Dos命令
    #切换到D盘D:#查看盘符目录下的所有文件dir#进入D盘的IDE目录cd/dD:\IDE#返回上一级目录cd..#清除屏幕cls#退出终端exit#查看电脑ipipconfig#打开应用calcmspaintnotepad……#ping命令pingwww.baidu.com#创建文件夹mdwenjianjia#删除文件夹rdwenj......
  • REST 和 RPC 有什么本质差异?
    随着Web应用程序和分布式系统的不断发展,面向服务的架构和分布式系统的设计变得越来越重要。在这个领域中,REST和RPC是两种广泛使用的架构风格。本文将分别介绍REST和RPC的概念和特点,然后从丰富的角度来分析REST与RPC的差异。最后,我们将分析REST和RPC的适用场景,并展望它们未来的发展......
  • 低代码赛道拥挤 生态聚合成为破局关键
    在云计算和移动互联网的强劲推动下,企业数字化转型的步伐正在加速,对于软件应用开发的需求也呈现出爆发式的增长。这样的背景下,低代码平台凭借其独特的优势迅速崛起并引发了业界的广泛关注。自2020年以来,低代码领域已成为投资热点,至少有20家公司在这一领域获得了资本的青睐,其中一些......
  • 字符设备驱动-9.内核定时器
    1引入定时器前面的gpio按键驱动引入了中断,当按键按下会记录按键信息,理想状况是按下一次按键记录一组数据,但实际上按下机械振动导致电平反复跳动最后才稳定,按下一次gpioirq会触发多次,这个被叫做“抖动”,那么可以利用定时器进行“去抖”。到linux_5.10版本structtimer_list......
  • 为Linux配置固定IP(Windows)
    配置固定IP地址目前我们虚拟机的Linux操作系统,其IP地址是通过DHCP服务获取的。DHCP:动态获取IP地址,即每次重启设备后都会获取一次,可能导致IP地址频繁变更。为什么需要配置固定IP地址原因1:办公电脑IP地址变化无所谓,但是要远程连接到Linux系统,如果IP地址经常变化就要频繁修改适......
  • 都说DevOps落地难,到底难在哪里?也许你还没找到套路
    当你打开这篇文章的时候,也许你也在为DevOps的落地而苦恼,也许你的组织正在尝试DevOps转型,作为一线的实践者,说说我对这个“落地难”的看法,欢迎交流不同看法~DevOps是实践摸索出来的,别人的终究是别人的如下图所示,你可能在不同企业研发效能的分享都看到过,各种关于DevOps的书上有会提到De......
  • 爬虫案例分享
    案例importrequests#如果报红,电脑控制台执行:python-mpipinstallrequests,下载即可frombs4importBeautifulSouptitle=[]#所有文章标题#因为需要爬取的数据,不单单存在一个页面,所以需要分析目标网站的URL规律,构造出每一页的URL,并逐个爬取forpageinrange(4):#目......