当前位置:   article > 正文

sql server数据库函数编写_sqlserver 函数编写

sqlserver 函数编写

数据库函数编写



前言

因为今天项目上遇到了需要编写 数据库函数,所以记录一下


直接上函数创建的sql吧

create Function get_hrmid_name(@str varchar(1000))
Returns varchar(1000)
as
Begin
	-- 声明变量 -- 19,21,3,
	set @str = @str+','
	Declare @insertStr varchar(50) --截取后的第一个字符串
	Declare @newstr varchar(1000) --截取第一个字符串后剩余的字符串
	Declare @strnum varchar(1000) --中间值
	Declare @renum varchar(1000) --中间值

	set @insertStr = left(@str,charindex(',',@str)-1)
	set @newstr = stuff(@str,1,charindex(',',@str),'')
	set @strnum=(select lastname from  hrmresource where id = @insertStr)
	
	
	set @renum=@strnum
	while(len(@newstr)>0)
	begin
		set @insertStr = left(@newstr,charindex(',',@newstr)-1)
		set @strnum=(select lastname from  hrmresource where id = @insertStr)
		set @renum=	concat(@renum,',',@strnum)
		set @newstr = stuff(@newstr,1,charindex(',',@newstr),'')
	end
	
Return (@renum)
End
go
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28

上面的函数实现的功能是 把逗号隔开的id 作为条件到hrmresource里面查询 转换成具体的姓名
在这里插入图片描述
下面说下函数里面的逻辑
1.先定义变量,用来做运算或者取数

Declare @insertStr varchar(50) --截取后的第一个字符串
Declare @newstr varchar(1000) --截取第一个字符串后剩余的字符串
Declare @strnum varchar(1000) --中间值
Declare @renum varchar(1000) --中间值
  • 1
  • 2
  • 3
  • 4

2.运算逻辑处理

set @insertStr = left(@str,charindex(',',@str)-1)
set @newstr = stuff(@str,1,charindex(',',@str),'')
	
set 是用来设置变量的值;

CHARINDEX(str1,str[,start])函数返回子字符串str1在字符串str中的开始位置, 
例如:CHARINDEX('a','banana')返回字符串'banana'中子字符串‘a’ 第一次出现的位置,结果为2LEFT()函数从提供的字符串的左侧提取给定数量的字符。 例如,LEFT('SQL Server'3)返回SQL。

STUFF 函数将字符串插入到另一个字符串中。 它从第一个字符串的开始位置删除指定长度的字符;然后将第二个字符串插入到第一个字符串的开始位置。

最后循环处理 上述逻辑,把查出来的name通过concat函数拼起来,最后返回 张三,李四,王二 一列数据
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13

总结

不同数据库函数和存储过程的编写都会有些差异


声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/煮酒与君饮/article/detail/753718
推荐阅读
相关标签
  

闽ICP备14008679号