故如虹,知恩;故如月,知明
排名
6
文章
6
粉丝
16
评论
8
{{item.articleTitle}}
{{item.blogName}} : {{item.content}}
ICP备案 :渝ICP备18016597号-1
网站信息:2018-2024TNBLOG.NET
技术交流:群号656732739
联系我们:contact@tnblog.net
欢迎加群交流技术

sqlserver函数

4328人阅读 2019/5/20 17:20 总访问:3838047 评论:0 收藏:0 手机
分类: 数据库

函数

系统自带函数(avg,sum,min,max,count),用户自定义函数

     

系统分类:

表值函数,标量值函数,聚合函数

   

函数语法:

函数必须要一个返回值

   

create function 函数名(参数列表)

returns 返回类型

as

begin

    ......函数体

    return 返回值

end

   

定义一个函数,没有参数,返回为int

create function func_show()

returns int

as

begin

    return 1

end

   

执行函数

select dbo.函数名

dbo  database ower  数据库拥有者

   

--表值函数(返回一张表的结果)

create function 函数名(参数列表)

returns table

as 

return 查询表的结果


下面贴demo
show code

--定义一个函数,没有参数,返回为int
create function func_show()
returns int
as
begin
  return 1
end

select  dbo.func_show()

--定义一个函数,有一个参数,有一个返回值,传一个参数输出一句话
go 
alter function func_print(@msg nvarchar(64))
returns nvarchar(64)
as
begin
  return @msg
end

select dbo.func_print('hello func')

--定义一个求和的函数,两个参数一个返回值
create function func_sum(@p1 int,@p2 int)
returns int
as
begin
  return @p1+@p2
end
select dbo.func_sum(6,9)


select * from UserInfo

--根据用户名查询学号
alter function func_select(@username nvarchar(64))
returns nvarchar(64)
as
begin
   --定义一个变量
   declare @number_temp nvarchar(64)
   --给变量赋值 
   select @number_temp =number from UserInfo where username=@username
   
   if(@number_temp is null)
      return '用户名不存在'
      
   --返回变量
   return @number_temp
       
end

select dbo.func_select('吕布')


=--查询用户表
alter function func_query(@number nvarchar(64))
returns table
as
 return select * from UserInfo where number like '%'+@number+'%'


select * from dbo.func_query('002')


--系统自带的字符串函数

--截取字符串
select SUBSTRING('abcdef',4,2)
--求字符串的长度
select LEN('abcdef')
--进一法  3.14--> 4    3.2--> 4
select CEILING(3.04)
--去尾法
select FLOOR(3.9)

--自定义一个函数,一个参数,一个返回值,要求:实现四舍五入,只考虑一个小数
select my_round(3.6)



create function my_round(@number nvarchar(64))
returns int
as
begin
  declare @numberTemp int;
  set @numberTemp = SUBSTRING(@number,charindex('.',@number)+1,1)
  return @numberTemp
end


select dbo.my_round('3.64')


欢迎加群讨论技术,群:677373950(满了,可以加,但通过不了),2群:656732739

评价