SQL Server函数的使用

SQL 函数

一、 SQL Aggregate 函数(合计)

   Aggregate: 函数计算从列中取得的值,返回一个单一的值。

  函数:

  •  AVG() - 返回平均值
  • COUNT() - 返回总行数
  • Top 1 - 返回数据的第一行的值,要使用order by进行正序排序(只有MS Access支持FIRST()LAST()函数)
  • Top 1  - 返回数据的最后一行的值,要使用order by进行倒叙排序(LAST)
  • MAX() - 返回最大值
  • MIN() - 返回最小值
  • SUM() - 返回总和SQL Scalar 函数

二、 SQL Scalar 函数(数量、标量)

  Scalar 函数基于输入值,返回一个单一的值。

  函数:

  • UPPER() - 将某个字段转换为大写---(Mysql中使用UCASE())
  • LOWER() - 将某个字段转换为小写---(Mysql中使用LCASE())
  • LEFT(),RIGHT(),SubString() -从某个文本字段提取字符---(Mysql中使用MID())
  • LEN() - 返回某个文本字段的长度(Mysql中使用LENGTH())
  • ROUND() - 对某个数值字段进行指定小数位数的四舍五入-decimal() 
  • GETDATE() - 返回当前的系统日期和时间---(Mysql中使用NOW())
  • COMVERT()-把日期转换为新数据类型的通用函数(Mysql中使用FORMAT() - 格式化某个字段的显示方式)

三、 函数例子

  1.AVG() - 返回平均值(Average): SELECT AVG(column_ name) FROM table_name

    查询a表中count列的平均值  SELECT AVG(count) AS CountAverage FROM a; 

  2.COUNT() - 返回总行数 

    1) COUNT(column_name)函数返回指定列的列数的总数NULL不计入):

      SELECT COUNT(column_name) FROM table_name; 

    2) COUNT(*) 函数返回表中的记录数:

      SELECT COUNT(*) FROM table_name;

    3) COUNT(DISTINCT column)函数返回指定列的不重复总数distinct去重

       SELECT COUNT(DISTINCT column_name) FROM table_name; 

    COUNT(DISTINCT) 适用于 ORACLE 和 Microsoft SQL Server。

  3. TOP 子句用于规定要返回的记录的数目。

    percent百分比: SELECT TOP number|percent column_name(s) FROM table_name;

    a表中百分之50的数据:select Top 50 percent * from a;

  TOP 1 -返回指定的列中第一个数据(只有MS Access支持FIRST()和LAST()函数)

    1) SQL Server: asc正序

      SELECT TOP 1 column/* FROM table_name ORDER BY column_name ASC;

    2) MYSQL:

      SELECT column FROM table_name ORDER BY column_name ASC LIMIT 1

    3) ORACLE:

      SELECT column FROM table ORDER BY column ASC WHERE ROWNUM <=1;

    4) MS Access: SELECT FIRST(column_name) FROM table_name;

   4.TOP 1  - 返回指定的列中最后一个记录的值 

    1) SQL Server:  desc倒叙

      SELECT TOP 1 column_name FROM table_name ORDER BY column_name DESC;

    2) MYSQL:

      SELECT column FROM table_name ORDER BY column_name DESC LIMIT 1;

    3)ORACLE:

      SELECT column FROM table ORDER BY column DESC WHERE ROWNUM <=1;

    4)MS Access:

      SELECT LAST(column_name) FROM table_name;

     

 

   5.MAX() - 返回指定列的最大值  SELECT MAX(column_name) FROM table_name;

    查询a表中count列的中最大的值select MAX(count) from a;

  6.MIN()- 函数返回指定列的最小值 SELECT MIN(column_name) FROM table_name;

    查询a表中count列的中最小的值select MIN(count) from a;

  7.SUM() - 函数返回数值列的总数 SELECT SUM(column_name) FROM table_name;

    查询a表中count列的中值得总数select SUM(count) from a;

  8.GROUP BY-用于结合聚合函数,根据一个或多个列对结果集进行分组

    SELECT column_name, aggregate_function(column_name)
    FROM table_name WHERE column_name operator value
    GROUP BY column_name;

    group by分组的字段=select查询的字段

    1)查询表中姓名,根据姓名分组:

      select Name from Tables group by Name;

    2)查询姓名年龄和总成绩,根据姓名年龄分组:

      select Name,Age,sum(Score) as '总数' from Tables group by Name,Age;

    

 

   9.HAVING  子句可以筛选分组后的各组数据

    增加 HAVING 子句原因是:WHERE 条件不能使用聚合函数

    SELECT column_name,aggregate_function(column_name) 

    FROM table_name WHERE column_name operator value 

    GROUP BY column_name 

    HAVING aggregate_function(column_name) operator value;

  10.EXISTS 运算符

·    用于判断查询子句是否有记录,如果有一条或多条记录存在返回 True,否则返回 False

    SELECT column_name(s) FROM table_name

    WHERE EXISTS(SELECT column_name FROM table_name WHERE condition);

  11.UPPER() 函数把字段的值转换为大写

    (1) SQL SERVER: upper

      SELECT UPPER(column_name) FROM table_name; 

    (2) MYSQL: ucase

      SELECT UCASE(column_name) FROM table_name;

  12.LOWER() 函数把字段的值转换为小写

    (1)SQL SERVER: lower

      SELECT LOWER (column_name) FROM table_name;

    (2)MYSQL: lcase

      SELECT LCASE(column_name) FROM table_name;

  13.left(),right(),substring() 函数用于从文本字段中提取字符

    1) SQL SERVER:

     left(string,length):

1 --返回从字符串左边开始指定个数的字符
2 select LEFT('SqlServer_2008',3);   --返回Sql

 

     right(string,length):

1 --返回从字符串右边开始指定个数的字符
2 select RIGHT('SqlServer_2008',4);---2008

 

     substring(character,start,length):

1 --返回从字符串中间的字符
2 select SUBSTRING('SqlServer_2008',4,6);---server

 

    2) MYSQL: MID()

    SELECT MID(column_name,start,length) FROM table_name;

1   --返回从字符串中间的字符
2 select MID('列名OR字符串',1,4);--- 列名OR

 

   14.LEN() -函数返回文本字段中值的长度

    1) SQL SERVER: len()

      SELECT LEN(column_name) FROM table_ name;

    2) MYSQL: length()

      SELECT LENGTH(column_name) FROM table_name;

     

 

  15.ROUND() 函数用于把数值字段四舍五入为指定的小数位数

    1) ROUND (数据OR字段, 小数后几位, 截断) 截断默认是0

     SELECT ROUND(column_name,decimals) FROM table_name;

    2) decimal():小数,十进制 cast(数据as decimal(,))

    SELECT CAST(数据OR字段 as decimal(数据的位数, 小数后几位))

    

 

 

   16. getdate() 获取当前系统的日期和时间

    select getdate();

  17.covert() 函数是把日期转换为新数据类型的通用函数。

    CONVERT(data_type(length),expression,style)

    convert(数据类型(长度),getdate(),格式)

     

 

posted @ 2021-08-06 10:18  Luckyfairy  阅读(739)  评论(0编辑  收藏  举报