zoukankan      html  css  js  c++  java
  • SqlServer内置函数和使用

    聚合函数
    -> MAX(字段)
    -> MIN(字段)
    -> AVG(字段)
    •-> 在计算时,对于null的数据不计入总是
    -> SUM(字段)
    -> COUNT(字段)
    •-> count(*)计算所有的列、count(字段)不计为null的列
      聚合函数会忽略为空的值
    -> select的字段可以当做变量名来进行计算
    •-> select (english+math)/2 as 平均分 form score
    -> 计算时null表示未知,既不是最大,也不是最小,与null的运算结果也为null
     
     1 select name, 
     2     AVG(score), 
     3     COUNT(score), 
     4     COUNT(*),
     5     MAX(score), 
     6     min(score),
     7     SUM(score)
     8 from
     9     Score
    10 where
    11     name = '张三'
    12 group by
    13     name;
    14    
    18 select
    19     name, 
    20     score,
    21     AVG(score) over()
    22 from
    23     Score
     
    字符串函数
    LEN() :计算字符串长度(字符的个数。)
    datalength();//计算字符串所占用的字节数,不属于字符串函数。
    LOWER() 、UPPER () :转小写、大写
    LTRIM():字符串左侧的空格去掉
    RTRIM () :字符串右侧的空格去掉
    LTRIM(RTRIM('         bb        '))
    LEFT()、RIGHT()  截取取字符串
    •SELECT LEFT('abcdefg',2) 结果为---ab,左边开始截取2个
     SUBSTRING(string,start_position,length)
    -> 参数string为主字符串,start_position为子字符串在主字符串中的起始位置,该位子1开始
    -> length为子字符串的最大长度。
    -> SELECT  SUBSTRING('abcdef111',2,3)结果为--bcd
     
     1 -- 在数据库中存储了订单的编号D000134623321
     2 -- 订单编号以D开头并有十位数字
     3 select 
     4     'D' + right('0000000000' + id, 10) as id,
     5     name,
     6     price
     7 from
     8 (
     9     values
    10     ('123', 'ACER台式电脑', 13566),
    11     ('13', '九阳豆浆机', 400),
    12     ('9761', '南府电池', 10)
    13 ) as tbl(id, name, price)
     
    日期函数
    -> 获得系统当前时间:getdate()
    •select getdate()
    •当前是第几天:select day(getdate())
    •当前的年份:select year(getdate())
    •当前的月份:select month(getdate())
    -> 在当前时间加上一个时间间隔
    •dateadd(在哪个部分增加,增加多少,日期)
     
    select datepart(Dw, GETDATE());
    --周三,显示的是4 ????
    
    --小时+10
    select GETDATE(), DATEADD(HH,10,GETDATE());
    --天+10
    select GETDATE(), DATEADD(day,10,GETDATE());
    l-> 判断两个日期的间隔
    •datediff(单位,开始的时间,结束的时间)
    -> 实例:将学生按年龄分组
    1 select datediff(year,stuBirthdate,getdate()),count(stuId )
    2 from Student group by datediff(year,stuBirthdate,getdate()) 
    3 order by datediff(year,stuBirthdate,getdate()) 
     1 select
     2     *
     3 from 
     4     Student
     5 where
     6     MONTH(stuBirthdate) = 6--6月份出生的
     7     and
     8     YEAR(GETDATE()) - YEAR(stuBirthdate) between 19 and 26;
     9 
    10 select
    11     *
    12 from 
    13     Student
    14 where
    15         MONTH(stuBirthdate) = 6
    16     and
    17     YEAR(GETDATE()) - YEAR(stuBirthdate) in (19, 21, 23, 27);    

     --为了提高查询的效率,索引字段不应添加方法处理

    -- 如果在stuBirthdate上添加了索引,但是如此查询(使用datediff方法)那么索引无效

    -> 返回日期的特定部分
    •datepart()
    •示例:统计学生出生年份和数量(某一年的有多少个)
    1 select datepart(year,stuBirthdate),count(*)
    2 from student group by datepart(year,stuBirthdate)
    3 order by datepart(year,stuBirthdate)
     len和datelength区别?
    -> datalength()系统函数,计算字节数
    -> len()函数,计算字符数
     1 select ASCII('abc');--97
     2 select ASCII('');--206
     3 select UNICODE('abc');--97
     4 select UNICODE('');--25105
     5 
     6 select CHAR(97);--a
     7 select NCHAR(25105);--
     8 
     9 --len 是字符数(不算空格),datelength是字节数
    10 select LEN('1234567890'),LEN('一二三四五六七八九十');--10,10
    11 select DATALENGTH('1234567890'), DATALENGTH('一二三四五六七八九十');--10,20
    12 select LOWER('aAbBcC'), UPPER('aAbBcC');--小写,大写
    13 
    14 select len('   123')                --6
    15 select datalength(RTRIM('123   ')); --3
    16 select LEN('123   ');                --3
    17 select DATALENGTH('123   ');        --6
     
    类型转换函数
     
    CAST ( expression AS data_type)
    CONVERT ( data_type, expression,[style])
    Select ‘您的班级编号’+ 1  错误这里+是数学运算符
    SELECT FIdNumber,
    CAST(RIGHT(sNo,3) AS INTEGER) as 后三位的整数形式,
    CAST(RIGHT(sNo,3) AS INTEGER)+1 as 后三位加1,
    CONVERT(INTEGER,RIGHT(sNo,3))/2 as 后三位除以2
    FROM student
    对日期的转换。转换成各种国家格式的日期。
    •select convert(varchar(20),getdate(),104)
    •Style的格式,查sql帮助。(输入convert函数查询)
    •将日期转换为指定格式的字符串。日期→字符串
     
  • 相关阅读:
    iframe和href中target属性的应用
    跨页面实现多选
    微软EPG老大发给员工的mail
    WebSerivce[连载]
    测试MSSQL保留字
    检正email的格式
    正则常用表达式
    企业库DAAB基本用法
    为什么覆写了Equals,还要覆写GetHashCode呢
    深入熟悉C# (待续)
  • 原文地址:https://www.cnblogs.com/kongsq/p/3861905.html
Copyright © 2011-2022 走看看