SQLServer中的函数

4.函数

1.介绍函数

  • 在Java中,函数也称为方法,是一段具有特定功能、可重复使用的代码块。

  • 函数的返回值:

    • 通过return语句返回一个值,返回值的类型必须与函数定义中的返回值类型一致

    • 若函数不需要返回值,返回类型为void

  • 函数的作用

    • 提高代码的复用性,避免重复编写相同的代码

    • 使代码结构更清晰,将复杂的任务分解为多个简单的函数,便于理解和维护


2.字符函数

  • char:固定长度,例如:性别;

  • varchar:可变长度,例如:地址;

  • text:备注,说明之类;

  • blob:二进制的,可以存储图片或者声音文件。但在实际中一般不会直接把图片存储到数据库里面,因为数据库扛不起那么大的内存压力,会用专用的图片存储服务器存储图片。

  • 大小转换

    • upper:转大写

    • lower():转小写

    select upper('adc')
    select lower('AdcA')
  • 随机数

    • uuid()

    • 由 数字+字母+四个横杠组成的一个36位的随机字符串

    select uuid()
  • 替换

    • replace()

    select replace ('aaaddd',  'a ' , ' b ')第一个是参数 第二个是要替换的 第三个是替换后的值
    嵌套:select replace (replace ('aaaddd', 'a ' , ' b '), 'd' ,'D' )
  • 截取

    • substring()

    select substring( ' asdfg ' , 2, 4 )从第2个字符开始截取4个 包括了第二个
    select substring( ' asdfg ' ,2)  从第2个开始截取所有
  • 去除空格

    • trim()

    • 默认去除前后空格,或者去除字符串的指定首字符串、去除字符串的指定首位字符串

    select trim( '  sfggh  ')
  • 获取字节的个数

    • length()

    • 获取字节的个数 (MySQL默认编号是utf-8,每个汉字占3个字节,数字 英文都是1个字节,编码ANSI 汉字占2个字节)

     select length( trim ( '  sss哈ha  '))
  • 获取字符的个数

    • char_length()

     select char_length(trim (  ' sssssad ')
  • concat()

    • 拼接字符串函数,返回结果为连接参数产生的字符串,参数可以是一个或多个;

    • 应用场景:模糊查询、字符串拼接

    select * from tb_student where sname like concat('%','四','%');
    select * from tb_student where sname like concat('四','%');
    
    select * from tb_student where sname like concat('%','四');
    
    select concat('a',1);
    


3.日期函数

  • date:年月日,对应java里面的:yyyy-MM-dd格式;

  • time:时分秒,对应java里面的:HH:mm:ss格式;

  • datetime:年月日时分秒,对应yyyy-MM-dd HH:mm:ss格式;

  • timestamp:时间戳从1970-1-1开始计算到现在的总毫秒数,就是java里面的格林尼治时间;

  • 获取当前系统时间:

    • now()、sysdate()

    • 语法:

      语法一:select now()
      语法二:select sysdate()
      
  • 提取指定日期里面的年月日

    • 提取指定日期的日:day() 语法:select day(2004-12-27)

    • 提取指定日期的月份:month()

    • 提取指定日期的年份:year()

    • 提取默认当前时间的年月日:

      		select day(now()) 是指当前时间的多少号
              select month(now()) 当前时间的多少月
              select year(now())  当前时间的多少年
      
  • 日期转换函数

    • date_format()格式

      • 格式化指定的日期,将日期转换成指定格式的字符类型日期,date类型和字符串型的日期都可以转换,fromat格 式的常用指示符

      • 表示年份:

        • %Y:4位数表示年份

        • %y:2位数形式表示年份,取最后两位数

      • 表示月份:

        • %M:以英文形式表示

        • %m:以数字形式表示

      • 表示日期/号:

        • %d

      • 表示小时:

        • %H:以24小时制

        • %h:以12小时制

      • 表示分钟

        • %i

      • 表示秒:

        • %s:以双位数形式 01,02

  • 格式转换:

    select date_fromat(now(),'%y年%m月%d日 %H时%i分%s秒')时间
                       select str_to_date(now(), '%y-%m-%d-%h-%i-%s')
    
    • 案例

      查询学生的年龄用当前时间减去出生时间 年份
      select year(now())-year(birthday) from tb_srudent 
      
       查询本月过生日的学生
      select * from tb_stdent where  month(birthday) =month(now())
      


4.数值函数

  • int:整型,对应 java里面的 int/Integer;

  • bigint:长整型,对应 java里面的 BigInteger/Long;

  • float:小数,一般用来存储分数相关的,不会用来存储货币相关的;

  • decimal:小数,一般用来存储与货币相关的数据,对应的java类型: java.math.BigDecimal;

  • 例如:decimal(5,2):表示整数位最多3位数,小数位2位数,小数位多出的位数进行四舍五入,但是四舍五入后整数位不能超过3位数,如:999.999就不能存储,因为小数位的9四舍五入后整数位会变成1000,超过了3位数。

  • 向下取整

    • floor()

    • 没有四舍五入,注意负数情况

    select floor(3.14) 结果:3
    select floor(-3.14) 结果:-4
    
  • 向上取整

    • celi()

    • 小数位除了纯0外其他往个位数进一,注意负数情况

    select ceil(3.14)  结果: 4
    select ceil(-3.14) 结果: -3
    
  • 四舍五入

    • roundound()

    • 四舍五入,也可以指定本保留的小数位数

    select round (3.14) 结果: 3
    select round (3.5)  结果: 4
    select round (3.14, 3) 结果: 3.140
    

5.条件判断函数

  • mysql里面函数的作用等于三元运算符的效果

  • if()

    语法: if(条件,结果(条件成立),结果(条件不成立))
       select if( 3>2, ' 正确', '错误')
    
  • ifnull()

    • 判断第一个值是否为空,如果不为空 就返回第一个值 ,为空 就返回第二个值

    select ifnull(name, ' 空 )from tb_student
    
  • case..when...end

select case when  else end from
    select *,
         case 
               when xid=1  then ' 语文 '
              when xid=2  then '  数学 '    (先判断 后赋值)
        end 取个列名
from 表名


6.聚合函数

1.什么是聚合函数?

  • 聚合函数作用于一组数据,并对一组数据返回一个值

2.聚合函数类型

  • AVG()

  • SUM()

  • MAX()

  • COUNT()

3.聚合函数语法

  • 聚合函数不能嵌套调用。比如不能出现类似"AVG(SUM(字段名称))"形式的调用

3.1.AVG和SUM函数
  • 可以对数值型数据使用AVG和SUM函数

  • AVG():平均数

  • SUM():总和

3.2 MIN和MAX函数
  • 可以对任意数据类型的数据使用 MIN 和 MAX 函数。

  • MIN():最小值

  • MAX():最大值

3.3 COUNT函数
  • COUNT(*)返回表中记录总数,适用于任意数据类型。

    SELECT COUNT(*)
    FROM	  employees
    WHERE  department_id = 50;
    
  • COUNT(expr) 返回expr不为空的记录总数。

    SELECT COUNT(commission_pct)
    FROM   employees
    WHERE  department_id = 50;
    

3.4 GROUP BY
  • 可以使用GROUP BY子句将表中的数据分成若干组


7.合并

  • 前提条件:结果集列数个数相同,列的类型还要相同或是兼容

  • 使用场景:在项目统计报表模块,用来合并数据

  • union:

    • 将所有的查询结果合并到一起,然后去除相同的记录,交集

  • b.union all:

    • 将所有的查询结果合并在一起 不会去除系统记录,并集

select ' s '
union (拼接)
select ' dd'
select 'sss'
union all
select ' hhhh '

8.给查询的字段取别名

  • 两种方式:控股个和as

  • 语法

    select 字段名 别名,字段名 as 别名 from 表名
    
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值