函数
系统函数(算术函数,聚合函数,数据类型转换函数,字符串函数,日期函数,系统统计函数,文本图像函数)
算术函数:是对数据类型为整型、浮点型、实型,货币型这些列进行操作
算术函数包括(三角函数,反三角函数,幂函数,角度弧度转化函数,取近似值函数,随机函数)
三角函数:显示60度角的正弦、余弦值。
三角函数(返回指定角度的正弦余弦等值) 反三角函数(根据指定正弦或余弦的浮点值,返回指定的弧度角)
declare @test_Var float,@Test_Value float SIN(浮点表达式)正弦函数 ASIN(浮点表达式)反正弦
set @test_Var=60 COS(浮点表达式)余弦函数 ACOS(浮点表达式)反余弦
set @Test_Value=SIN(@test_Var) TAN(浮点表达式)正切函数 ATAN(浮点表达试)反正切
select '60弧度角的正弦值为:',@Test_Value COT(浮点表达式)余切函数 ACOT(浮点表达式)反余切
在面向对象编程设计中,函数可以认为是一个集成的代码块。函数是可以反复调用。
算术函数 符号函数
角度弧度转换函数 幂函数 ABS(数字表达式) 取绝对值
SIGN(数字表达式) 判断参数的符号是正号还是负号
DEGREES:角度转换弧度 EXP (浮点表达式)返回指定表达式的指定值 随机函数
RADIANS:弧度转换角度 LOG (浮点表达式)返回指定表达式的自然对数 RAND
LOG10(浮点表达式)返回表达式以10为底的对数值 PI()函数
SQRT (浮点表达式)返回指定表达式的平方根
随机函数
取近似值的函数 declare @test_var float \声明变量,为浮点数
CELLING(数字表达式) 返回大于或等于表达式的最小整数(取整) set @test_var=RAID() \为此变量赋值,该变量为一个浮点数(浮点数为0到1之间的任意浮点数)
FLOOR (数字表达式) 返回小于或等于表达式的最大整数(取整) print @test_var
ROUND (数字表达式,整型表达式) 以整型的形式返回数字表达式的整型值(四舍五入)
PI() 返回的是圆周率
declare @test_var folat
set @test_var=PI() \返回的是圆周率
print @test_var
declare @test_var float,@Test_Value float \声明变量为浮点数
set @test_var=60 \设置角的弧度为60
set @Test_value=RADIANS(@test_var) \设置将弧度转换为角度
select '60弧度角转换为角度其值为:',@Test_var
判断是否为正
declare @test_var float,@test_var2 float \声明变量为浮点数
set @test_var=-76.23352 \为变量赋值
set @test_var2=SIGN(@test_var) \通过SIGN函数来判断@test_ var变量是否为负数,来赋值给@test_var2。
if @test_var2=1 \如果@test_var2为正数(1在SQL代表正数,-1代表负数,1和-1是判断条件)
select '当前值为正直'
else
print '当前值为负值'
字符串函数
是对二进制数据字符串和表达式执行不同的运算,此类函数作用于char、varchar、binary、 varbinary以及可以隐式转换char和varchar的数据类型。
将字母转换为ASCII码 ASCII() 将ASCII码转换为对应的数值
declare @test_String1 char(60)
set @test_String1='H' (!!!大写的CHAR()是ASCII码转换的)
select 'H的ASCII码是:',ASCII('A') select 'H的ASCII码是:',ASCII('A')
所有的字符串转换为大写
declare @test_String1 char(60),@test_String2 varchar(60) \声明变量以及变量类型 将数值转换为字符 str()
set @test_String1='Hello,world!' \为变量1赋值 declare @test_String float,@test_String2 varchar(60) \声明变量以及变量数据类型
set @test_String2=UPPER(@test_String1) \为变量2赋值 set @test_String1=1000.23456 \为变量1赋值
print @test_String2 \打印变量2的值 set @test_String2='Hello,world!' \为变量2赋值
print @test_String2+str(@test_String1,20,2) \输出变量2的值+变量1数据类型转换后的值,
UPPER(小写转换大写) 字符长度最长为20为小数点后保留2位整数
LOWER(大写转换小写)
测试字符串长度
declare @test_String1 float,@test_String2 varchar(60) \声明变量以及变量数据类型
set @test_String2='Hello, word!' \为变量2赋值
set @test_String1=LEN(@test_String2) \利用LEN测试变量2字符串长度,并把该值赋值给变量1
select '字符串Helloword!长度为:',@test_String1 \输出该程序
去除表达式头部空格的函数 去除表达式尾部空格
declare @test_String1 float,@test_String2 varchar(60)\声明变量以及变量数据类型 declare @test_String float,@test_String2 varchar(60)\声明变量以及变量数据类型
set @test_String2=' Hello, word!' \为变量2赋值 set @test_String2='Hello,world! ' \为变量2赋值
set @test_String1=LEN(ltrim (@test_String2)) \利用LEN测试变量2字符串长度,并把该值赋值给变量1 set @test_String1=rtrim(@test_String2) \利用LEN测试变量2字符串长度,并把该值赋值给变量1
select '字符串Helloword!长度为:',@test_String1 利用ltrim去除变量2中的空格,(在varchar中空格算字符串的长度) select '字符串Hello,world!长度为:',@test_String1 利用rtrim去除变量2中尾部的空格,(在varchar中空格算字符串的长度)
取子串函数 SUBSTRING(截取指定字符串从哪个字符到哪个)
LEFT函数(返回从字符串截取的指定个数的字符)
declare @test_String1 varchar(60),@test_String2 varchar(60)\声明变量以及变量数据类型 declare @test_String1 varchar(30),@test_String2 varchar(30)\声明变量以及变量数据类型
set @test_String1=Hello, word!' \为变量2赋值 set @test_String1='Hello, word!' \为变量1赋值
set @test_String2=LEFT(@test_String1,5) \利用LEFT截取变量1的字符串,截取长度为前五个字符。 set @test_String2=SUBSTRING(@test_String1,2,6) \利用SUBSTRING截取变量1的字符串,截取长度为从第二个
select '截取后的字符串长度为:',@test_String1 select '输出结果为:'+@test_String2 到第六个字符。
RIGHT(从右往左截取字符串)
字符串操作函数
REPLICATE 重复函数 REVERSE(将字符反转)
declare @test_String varchar(10) \声明变量 declare @test_String1 varchar(10),@test_String2 varchar(60) \声明变量
set @test_String=REPLICATE('a',6) \使用REPLICATE函数将a字母重复六次 set @test_String2='Hello,word' \赋值
select @test_String \变量输出 set @test_String1=REVERSE(@test_String) \赋值并声明需要反转的变量
select @test_string1 \输出变量
REPLACE(替换函数)
declare @test_String1 varchar(20),@test_String2 varchar(10) \声明变量
set @test_String1='Hello world!' \1赋值
set @test_String2= REPLACE(@test_String1'l','a') \2赋值,并把1中字符串中所有的L转换成A。
selcet @test_String2 \输出
SPACE函数 STUFF函数(替换函数)
declare @test_String1 varchar(20),@test_String2 varchar(30) \声明变量 declare @test_String1 varchar(20),@test_String2 varchar(30) \声明变量
set @test_String1='Hello,world!' \为变量1赋值 set @test_String1='Hello,world!' \为变量1赋值
set @test_String2=@test_String1+space(5)+'空格后的内容' \变量1后接space()函数(括号里的数字决定加多少个空格,) set @test_String2=STUFF(@test_String1,2,3,'替换后的内容') \利用STUFF函数将变量1中字符串,从第二个字符开始截取
print @test_String2 \输出变量2的值 并赋值给变量2。 print '输出结果为:'+@test_String2 截取三个字符并利用''中的内容为其替换
数据类型转换函数(cast) !可转换任意数据类型 convert(数据类型转换函数) !可转换任意数据类型
declare @test_String1 int,@test_String2 varchar(30) \声明变量 declare @test_var1 int \声明变量
set @test_String1=3000 \为变量赋值 set @test_var1=3000 \为变量1赋值
print '变量@test_String1的值为:'+cast(@test_String1 as varchar(30)) \将字符串类型变量转换为字符型变量 print 'Hello,world!'+convert(varchar(30),@test_var1)\利用convert函数将变量1的数据类型转换
日期时间函数 GETDATE() 获取年份函数 YEAR()
declare @test_var varchar(100) \声明变量 declare @test_var varchar(100) \声明变量
set @test_var=GETDATE() \为变量赋值时间函数 set @test_var=YEAR(GETDATE()) \为变量赋值。YEAR()函数必须需要一个参数,此参数为GETDATE()
print'当前日期时间为:'+@test_var\输出当前的年份、日期和时间 print '当前年份为'+@test_var \输出变量
set @test_var=month(GETDATE()) \获取月份值
set @test_var=(GETDATE()) \获取当前日期
select DATENAME(DW,GETDATE()) \获取当前星期
在SQLSERVER中char、varchar、nchar、nvarchar可存放字符型数据(字符串)
DATEPARK 以整数的形式返回日期的指定部分
DATENAME()函数\以字符串的形式返回日期的指定部分 eclare @test_var1 int \声明变量
set @test_var1=DATEPART(HOUR,GETDATE())\返回小时部分(通过GETDATE函数来获取所需要输出的小时部分)
select DATENAME(HOUR,GETDATE()) \从后面的日期时间里面返回当前的小时数 select'当前小时数为':+cast(@test_var1 as varchar(100))\通过cast将变量1转换为字符串数据类型,
MINUTE, \分钟数 来与'当前小时数'来匹配输出
(DATEADD)从原有日期时间增加多长时间
declare @test_var1 datetime \声明变量为日期型数据类型datetime,若当前日期为5月25号如果定义为int类型+10就会变成35号而非6月4号,这里应当注意!!!
set @test_var1=DATEADD(DAY,10,GETDATE()) \利用GETDATE函数来获取当前日期,并通过DATEADD函数来给当前日期增加10天,并赋值给变量1。
select'当前小时数为:'+cast(@test_var1 as varchar(100)) \输出,并把变量1的datetime数据类型转换为字符串数据类型。
DATEDIFF函数
DATEDIFF(datepart.startpart.endpart)
参数是给函数体内调用准备的,参数就好像调用参数时给函数下达的指令。
利用T-SQL语句创建函数
Create Function 函数名(@parameter 变量类型[.@parameter 变量类型])
Returns 变量类型
as
Begin
命令行和程序块
end
\!!!此函数名称为 test_functionA(),此函数的作用为在()括号里填写的任何值都乘以8
1到多个参数
\创建函数 \函数名称 \传递参数 \返回值
create Function test_functionA (@test_var int) returns int\定义函数创建函数名称,定义参数名称,定义返回值。
as
begin\从这开始是函数体
declare @sum int \声明变量sum
set @sum=@test_var*8 \为变量赋值,值为参数*8
return @sum \@sum只是返回值
end
print dbo.test_functionA(6000)
用循环语句调用函数
declare @test_var int \声明变量并定义变量数值类型
set @test_var=0 \并将其变量赋值,此变量为循环值(循环次数)
while @test_var<=20 \循环的条件是@test_var<=20
begin
print dbo.test_functionA(@test_var) \利用print输出函数的返回值
set @test_var=@test_var+1 \赋值
end
修改函数
alter function test_functionA(@test_var int) returns int \alter function声明修改函数
as
begin
declare @sum int \声明变量以及变量数据类型
set @sum=@test_var*20 \为变量赋值
return @sum \定义返回值
end
\这里的returns和return的区别在于;用户定义函数时,returns是定义该函数返回值的数据类型。
return用于返回具体的值/值变量。