加入收藏 | 设为首页 | 会员中心 | 我要投稿 草根网 (https://www.1asp.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 教程 > 正文

MSSQLSERVER数据库- 函数

发布时间:2022-11-26 13:03:26 所属栏目:教程 来源:
导读:   SQL提供了很多内置的函数,通过这些函数能进行各种复杂的运算和操作。对数据的处理变得灵活。在学习的过程中没有必要记住那么多的数学函数,记住一些常用的就行,在实际的应用中需要到哪些再进行查找。SQL函数的
   SQL提供了很多内置的函数,通过这些函数能进行各种复杂的运算和操作。对数据的处理变得灵活。在学习的过程中没有必要记住那么多的数学函数,记住一些常用的就行,在实际的应用中需要到哪些再进行查找。SQL函数的分类可以分为:
 
  字符串函数
 
  数学函数
 
  1、POWER()函数:用来计算指数的函数。该函数接受两个参数,第一个参数为待求幂的表达式mssql 函数,第二个参数为幂。执行下面的 SQL 语句:
 
  select POWER(3,2);显示结果是9
 
  2、RAND()函数用来生成随机算法。RAND()函数还支持一个参数,这个参数为随机数种子,例如执行下面的结果
 
  select RAND(1000) union all
  select RAND(2000) union all
  select RAND(3000) union all
  select RAND(4000) union all
  select RAND(5000) union all
  select RAND(6000)
  --产生的数字是
  0.732206331499865
  0.750839302758065
  0.769472274016265
  0.788105245274465
  0.806738216532665
  0.825371187790865
  由此我们可以看出RAND函数括号里面放一个数字后将产生一个固定的随机数。那么如何产生随机的数,例如想随机产生1-10的随机数?SQL语句可以这么写:
 
  select rand()*11
 
  但产生的结果是 2.04988385549992 这么长一串,我们只想要整数部份,不想要小数部份,那么该怎么办?
 
  select LEFT(rand()*11,1);
 
  可是经过多次测试后并没有取出10,因为LEFT只能截取一位数,而10是两位数字。那么该怎么取才正确?正确的取法如下:
 
  select cast(rand()*11 as int)
 
  3、求圆周率
 
  select 2*PI();结果:6.28318530717959
 
  mssql 函数_mssql是什么_mssql 在线管理
 
  其他的数学函数有
 
  日期函数
 
  GETDATE():取得当前日期时间DATEADD(DATEPART,NUMBER,DATE):计算增加以后的日期,参数datepart为计量单位,number为增量;可选值见备注;date为待计算日期。例如DATEADD(DAY,3,DATE)为计算日期date3天后的日期DATEDIFF(DATEPART,STARTDATE,ENDDATE):计算两个日期之间的差额,DATEPART为计量。DATEPART(DATEPART,DATE)返回一个日期的特定部份
 
  View Code
 
   1     --查出当前时间
   2     select getdate()
   3     --将当前时间将3天
   4     select dateadd(day,3,getdate()) 获得3天以前
   5     --将当前时间月份减一个月
   6     select dateadd(month,-1,getdate()) 获得1个月以前
   7
   8
   9     --查出当前数据是今年和今月的全部数据
  10     select * from table
  11     where month(date) = month(getdate()) and year(date)= year(getdate())
  12
  13
  14     --datediff 取出两个日期的时间差
  15     select datediff(day,getdate(),'2012-12-21');
  16     select datediff(second,getdate(),'2012-12-21');
  17
  18     --统计不同入学年数学生个数
  19     select count(*) year(sBirthday)
  20     from student
  21     group by year(sBirthday)
  22
  23
  24     --求每个年龄有多少个学生
  25     select DateDiff(year,sBirthday,getdate()),count(*) from student
 
  26     Group by DateDiff(year,sBirthday,getdate())
  27
  28
  29     --datename,datepart
  30     select datename(year,getdate()) --字符串
  31     select datepart(year,getdate()) --数字
  其他函数:
 
  1、类型转换函数
 
  MSSQLSERVER里有两个类型转换函数:CAST(EXPRESSIONASDATE_TYPE)、CONVERT(DATA_TYPE,EXPRESSION)
 
     --CAST的测试例子:
   selec '平均分数'+cast(23.56 as varchar(5))
    
     --CONVERT的例子
     select convert(int,89.123);
     select convert(decimal(10,2),89.123);
    
     --获取 2011-08-09形式的字符串
     select convert(varchar(10),getdate(),20) --20表示显示的日期格式
  2、空值处理函数
 
  COALESCE()函数:将会返回包括expression在内的所有参数中的第一个非空表达式。如果expression不为空值则返回expression;否则判断value1是否是空值,如果value1不为空值则返回value1;否则判断value2是否是空值,如果value2不为空值则返回value3;……以此类推,如果所有的表达式都为空值,则返回NULL。ISNULL的用法:举个例子,如果english字段的成绩是NULL,我们希望在显示的时候不要显示NULL,而用0代码,那么这时候可以这么写:selectstudentID,isnull(english,0)fromscore
 
  selectavg(english)fromscoreCASE...END的用法,CASE的写法的表达式如下:
 
  CASE EXPRESSION
 
  WHEN VALUE1 THEN RETURNVALUE1
 
  WHEN VALUE2 THEN RETURNVALUE2
 
  ELSE DEFAULTRETURN VALUE
 
  END
 

(编辑:草根网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章