函数

一、函数:字符函数

1、datalength
作用:指定字符串的占用空间
declare @i char(5),@j varchar(5)
set @i='abc'
set @j='abc'
select datalength(@i)
select datalength(@j)
实例:求每个用户的姓名所用的空间
select datalength(姓名) from yuanGong
2、len
作用:求字符串的个数
求'I Love You!'
select len('I Love You!')
3、left
作用:求左子串
语法:left(字符串,N)
从字符串的最左边开始取出N个字符
实例:从“中华人民共和国”取出中华
left('中华人民共和国',2)
select left('中华人民共和国',2)
4、right
作用:求右子串
语法:right(字符串,N)
从右边开始取出N个字符
select right('中华人民共和国',3)
5、substring
作用:取子串
语法:substring(字符串,N1,N2)
从字符串的N1位开始取,取出N2的2个
select substring('中华人民共和国',3,2)
6、ascii 阿斯珂玛值
A -- 65 小键盘的数字
a -- 97
0(零) -- 48
按Alt键加小键盘上的数字
实例:求出每个人姓名的ascii值
create proc asha @username varchar(100)
as
declare @i int,@j int
set @i=len(@username)
set @j=1
while @j<=@i
begin
select substring(@username,@j,1)
ascii(substring(@username,@j,1))
set @j=@j+1
end
exec asha 'Li Bo Tao'
7、char
求ascii值所对应的字符
select char(65)
8、replace 字符串替换
语法:replace(字符串1,字符串2,字符串3)
作用:从字符串1中查找字符串2,然后使用字符串3替换
select replace('I Love You','Love','Like')
select 姓名,replace(姓名,'赵','李') from yuanGong where like '赵%'
9、stuff 插入函数
语法:stuff(字符串1,N1,N2,字符串2)
从字符串1中N1位开始插入字符串2替换掉N2个字符
select stuff('ABCDEFCD',3,2,'XY')
select replace('ABCDEFCD','CD','XY')
select stuff('籍贯',1,0,'中国') from yuanGong
10、lower 将大写字母转换为小写字母
select lower('adfxyz')
11、upper 将小写字母转换为大写字母
12、str 将数值型转换为字符型 或 cast()
select 'abc' + str(100)
语法:str(数值,总长度(默认为10),小数点右边位数)
13、rtrim 去空格函数(尾随)
ltrim 去空格函数(前导)
select '杜飞不错,是好人   '+'真的不错'
select rtrim('杜飞不错,是好人'+'space(3)'+'真的不错')
14、space(n) 空格函数

二、数值函数

1、abs 求绝对值
2、pi 求圆周率
select pi()
3、power 求指数幂
power(2,3) -- 2 3
power(10,3) -- 10 3
4、sqrt 求平方根
select sqrt(9)
5、rand 求随机数
select rand()
说明:一般显示0到10之间的数
6、round 求四舍五入
select round(123.456,2)
select round(123.456,0)
select round(123.456,-1)
说明:负数表示在小数之前

三、日期型函数

Day() -- 日
Month() -- 月
Year -- 年
getdate -- 当前日期
select day(getdate())
1、dateadd 100天之后的日期
select dateadd(day,100,getdate())
2、datediff
select datediff(day,getdate(),'2008-08-08') --距奥运还有多少天
3、cast(表达式 as 新类型) --类型转换
4、convert(新类型,表达式) --类型转换

四、用户自定义函数

create function 函数名(形参)
returns 返回值类型
as
begin
SQL 语句
return 返回表达式
end
实例:求两个数的乘积
create function cj()
returns int
as
begin
return 100*200
end
调用自定义函数:
select dbo.函数名()
select dbo.cj()
实例:
create function cj2(@i int,@j int)
returns int
as
begin
declare @s int
set @s=@i*@j
return @s
end
select dbo.cj2(100,234)
实例:求指定半径圆面积 s=pi()*R*R
create function yuan(@R float)
returns float
as
begin
declare @s float
set @s=pi()*power(@R,2)
return @s
end
select dbo.yuan(2)
实例:编写一个函数,求指定半径的圆面积及周长

五、标量函数:返回值只有一个

1、内嵌表函数:返回值是一个表的形式
语法:create function 函数名(形参)
returns table
as
return select 语句
调用:
select * from dbo.函数名()
实例:
create function yuannan()
returns table
as
return select * from yuangong where 性别='男'
select * from dbo.yuannan()
实例:编写函数,求圆面积、周长
标量函数:只能有一个返回值
create function yuan1(@r float)
returns varchar(100)
as
begin
declare @s float,@z float,@x varchar(100)
set @s=pi()*power(@r,2)
set @z=2*@r*pi()
set @x='面积:'+cast(@s as varchar(100))+'周长:'+cast(@z as char(10))
return @x
end
select dbo.yuan1(2)
2、删除函数
语法:drop function 函数名
例:drop function fun04

本文出自 “盛木为怀” 博客,转载请与作者联系!

你可能感兴趣的:(数据库,sqlserver,休闲,09,lesson)