SQL server中函数的应用

聚合函数

函数名称 说明
SUM 返回表达式中所有值的和
AVG 计算平均值
MIN 返回表达式的最小值
MAX 返回表达式的最大值
COUNT 返回组中项目的数量
DISTINCT 返回一个集合,并从指定集合中删除重复的元组
HAVING 返回一个集合,查询数据表中的重复记录
  • SUM
    SUM函数返回表达式中所有值的和或仅非重复值的和。SUM 只能用于数字列。空值将被忽略。
    语法如下:
    SUM ( [ ALL | DISTINCT ] expression )
    参数说明:
    ALL:对所有的值应用此聚合函数。ALL是默认值。
    DISTINCT:指定 SUM 返回唯一值的和。
    expression:常量、列或函数与算术、位和字符串运算符的任意组合。expression 是精确数字或近似数字数据类型分类(bit 数据类型除外)的表达式。
    返回类型:以最精确的 expression 数据类型返回所有 expression 值的和。

  • AVG
    AVG函数返回组中各值的平均值。将忽略空值。
    语法如下:
    AVG ( [ ALL | DISTINCT ] expression )
    参数说明:
    ALL对所有的值进行聚合函数运算。ALL 是默认值.
    DISTINCT:指定 AVG只使用每个值的唯一实例,而不管该值出现了多少次。
    expression:是精确数值或近似数值数据类别(bit 数据类型除外)的表达式。不允许使用聚合函数和子查询。
    返回类型:返回类型由表达式的运算结果类型确定。

  • MIN
    MIN函数返回表达式中的最小值。
    语法如下:
    MIN ( [ ALL | DISTINCT ] expression )
    参数说明:
    ALL:对所有的值进行聚合函数运算。ALL 是默认值。
    DISTINCT:指定每个唯一值都被考虑。DISTINCT 对于 MIN 无意义,使用它仅仅是为了符合 SQL-92 兼容性。
    expression:常量、列名、函数以及算术运算符、按位运算符和字符串运算符的任意组合。MIN 可用于数字列、char列、varchar列 或 datetime 列,但不能用于 bit 列。不允许使用聚合函数和子查询
    返回类型:返回与 expression 相同的值。

  • MAX
    MAX函数返回表达式的最大值。
    语法如下:
    MAX ( [ ALL | DISTINCT ] expression )
    参数说明:
    ALL:对所有的值应用此聚合函数。ALL 是默认值。
    DISTINCT:指定考虑每个唯一值。DISTINCT 对于 MAX 无意义,使用它仅仅是为了SQL-92 兼容性
    expression:常量、列名、函数以及算术运算符、按位运算符和字符串运算符的任意组合。MAX 可用于数字列、character列和 datetime列,但不能用于 bit 列。不允许使用聚合函数和子查询。
    返回类型:返回与 expression 相同的值。

  • COUNT
    COUNT函数返回组中的项数。COUNT 返回 int 数据类型值。
    语法如下:
    COUNT ( { [ [ ALL | DISTINCT ] expression ] | * } )
    参数说明:
    ALL:对所有的值进行聚合函数运算。ALL 是默认值。
    DISTINCT:指定 COUNT 返回唯一非空值的数量。
    expression:除 text、image 或 ntext 以外任何类型的表达式。不允许使用聚合函数和子查询。
    返回类型:int类型。

  • DISTINCT
    DISTINCT函数,对指定的集求值,删除该集中的重复元组,然后返回结果集。
    语法如下:
    Distinct(Set_Expression)
    参数说明:
    Set_Expression:返回集的有效多维表达式 (MDX)。
    说明:
    如果 Distinct 函数在指定的集中找到了重复的元组,则此函数只保留重复元组的第一个实例,同时保留该集原来的顺序。

  • HAVING
    HAVING函数,查询数据表中的重复记录,可以借助HAVING子句实现,该子句用来指定组或聚合的搜索条件。HAVING子句只能与SELECT语句一起使用,而且,它通常在GROUP BY子句中使用。(不常用)
    HAVING子句语法如下:
    (HAVING [search condition])
    参数说明:
    [search condition]:指定组或聚合应满足的搜索条件。

具体操作代码,如下,需要自行创建一个数据库

USE DBDEMO4
//创建一张表
CREATE TABLE table4(
[NAME]  VARCHAR(20)  NOT NULL,
ID INT NOT NULL,
XB  VARCHAR(2) NOT NULL,
AGE INT NULL,
[Money] INT NULL
)
//查询表
SELECT * FROM dbo.table4
//添加数据
INSERT INTO table4
SELECT '李白',99999,'男',20,4000  UNION
SELECT '韩信' ,88888, '男',22,5000 UNION
SELECT '花木兰' ,77777, '女',20,6000 UNION
SELECT '赵云' ,66666, '男',25,4000 UNION
SELECT '露娜' ,55555, '女',22,8000 


//聚合函数
	//求和 (上表中所有人ID的总和)
	SELECT SUM(ID)FROM table4
	//平均值(上表中所有人ID的平均值)
 	SELECT AVG(ID)FROM table4
 	//最小值(上表中所有人ID的最小值)
	SELECT MIN((ID))FROM table4
	//最大值(上表中所有人ID的最大值)
	SELECT MAX((ID))FROM table4
	//统计(上表中所有人ID的总共出现的次数 / 多少组数据)
	SELECT COUNT((ID))FROM table4

数学函数

在这里插入图片描述

  • ABS
    ABS函数返回数值表达式的绝对值。
    语法如下:
    ABS(numeric_expression)
    参数说明:
    numeric_expression:精确数字或近似数字数据类型类别的表达式(bit 数据类型除外)。
    返回类型:提交给函数的数值表达式的数据类型。
  • PI
    PI函数返回 PI 的常量值。
    语法如下:
    PI ( )
    返回类型:float型。
  • POWER
    POWER函数返回对数值表达式进行幂运算的结果。Power 函数的计算结果必须为整数。
    语法如下:
    POWER(numeric_expression,power)
    参数说明:
    numeric_expression:是精确数字或近似数字数据类型类别的表达式(bit 数据类型除外)。
    power:有效的数值表达式。
  • RAND
    RAND函数返回从 0 到 1 之间的随机 float 值。
    语法如下:
    RAND ( [ seed ] )
    参数说明:
    seed:提供种子值的整数表达式(tinyint、smallint 或 int)。如果未指定 seed,则 Microsoft SQL Server 数据库引擎 随机分配种子值。对于指定的种子值,返回的结果始终相同。
    返回类型:float类型。
    注意:
    使用同一个种子值重复调用 RAND() 会返回相同的结果
  • ROUND
    ROUND函数返回一个数值,舍入到指定的长度或精度。
    语法如下:
    ROUND ( numeric_expression , length [ ,function ] )
    参数说明:
    numeric_expression:精确数值或近似数值数据类别(bit 数据类型除外)的表达式。
    length:是numeric_expression 将要四舍五入的精度。length 必须是 tinyint、smallint 或 int 类型的表达式。如果 length 为正数,则将 numeric_expression 舍入到 length 指定的小数位数。如果 length 为负数,则将 numeric_expression 小数点左边部分舍入到 length 指定的长度。
    function:要执行的操作的类型。function 必须为 tinyint、smallint 或 int。如果省略 function 或其值为 0(默认值),则将舍入 numeric_expression。如果指定了 0 以外的值,则将截断 numeric_expression。
    返回类型:返回与 numeric_expression 相同的类型。
  • SQUARE
    SQUARE(平方)函数
    SQUARE函数返回数值表达式的平方。语法说明如下:
    SQUARE(numeric_expression)
    参数说明:
    numeric_expression:任意数值数据类型的数值表达式。
  • SQRT
    SQRT(平方根)函数
    SQRT函数返回数值表达式的平方根。语法如下:
    SQRT(numeric_expression)
    参数说明:
    numeric_expression 是任意数值数据类型的数值表达式。
  • SIN
    SIN函数
    SIN函数以近似数字 (float) 表达式返回指定角度(以弧度为单位)的三角正弦值。
    语法如下:
    SIN ( float_expression )
    参数说明:
    float_expression:属于 float 类型或能够隐式转换为 float 类型的表达式。
    返回类型:float类型。
  • COS
    COS函数
    返回指定表达式中以弧度表示的指定角的三角余弦。
    语法如下:
    COS ( float_expression )
    参数说明:
    float_expression:float 类型的表达式。
    返回类型:float类型
  • TAN
    TAN函数
    TAN函数返回输入表达式的正切值。
    语法如下:
    TAN ( float_expression )
    参数说明:
    float_expression:是 float 类型或可隐式转换为 float 类型的表达式,解释为弧度数。
    返回类型:float类型。
  • COT
    COT函数
    COT函数返回指定的 float 表达式中所指定角度(以弧度为单位)的三角余切值。
    语法如下:
    COT ( float_expression )
    参数说明:
    float_expression:属于 float 类型或能够隐式转换为 float 类型的表达式。
    返回类型:float类型。

具体操作代码如下

字符串函数

在这里插入图片描述

  • ASCII
    ASCII函数返回字符表达式中最左侧的字符的 ASCII 代码值。
    语法如下:
    ASCII ( character_expression )
    参数说明:
    character_expression:char 或 varchar 类型的表达式。
    返回类型:int类型。
    说明:
    ASCII码共有127个,其中Microsoft Windows不支持1~7、11~12和14~31之间的字符。值8、9、10和13分别转换为退格、制表、换行和回车字符。它们并没有特定的图形显示,但会依不同的应用程序而对文本显示有不同的影响。
  • CHARINDEX
    CHARINDEX函数返回字符串中指定表达式的起始位置(如果找到)。搜索的起始位置为 start_location。
    语法如下:
    CHARINDEX ( expression1 ,expression2 [ , start_location ] )
    参数说明:
    expression1:包含要查找的序列的字符表达式。expression1 最大长度限制为 8000 个字符。
    expression2:要搜索的字符表达式。
    start_location:在 expression2 中搜索 expression1 时的起始字符位置。如果没有给定 start_location,而是一个负数或零,则将从 expression2 的起始位置开始搜索。
    返回类型:如果 expression2 的数据类型为 varchar(max)、nvarchar(max) 或 varbinary(max),则为 bigint,否则为 int。
  • LEFT
    LEFT函数返回字符串中从左边开始指定个数的字符。
    语法如下:
    LEFT ( character_expression , integer_expression )
    参数说明:
    character_expression:字符或二进制数据表达式。character_expression 可以是常量、变量或列。character_expression 可以是任何能够隐式转换为 varchar 的数据类型。否则,请使用 CAST 函数对 character_expression 进行显式转换。
    integer_expression:正整数。如果 integer_expression 为负,则返回空字符串。
    返回类型:
    当 character_expression 为非 Unicode 字符数据类型时,返回 varchar。
    当 character_expression 为 Unicode 字符数据类型时,返回 nvarchar
  • RIGHT
    RIGHT函数返回字符表达式中从起始位置(从右端开始)到指定字符位置(从右端开始计数)的部分。
    语法如下:
    RIGHT(character_expression,integer_expression)
    参数说明:
    character_expression:是从中提取字符的字符表达式。
    integer_expression:是起始位置,用正整数表示。如果 integer_expression 是负数,则返回一个错误。
  • LEn
    LEN函数返回字符表达式中的字符数。如果字符串中包含前导空格和尾随空格,则函数会将它们包含在计数内。LEN 对相同的单字节和双字节字符串返回相同的值。
    语法如下:
    LEN(string_expression)
    参数说明:
    string_expression:要计算的字符串表达式。
  • REPLACE
    REPLACE函数将表达式中的一个字符串替换为另一个字符串或空字符串后,返回一个字符表达式。语法如下:
    REPLACE(character_expression,searchstring,replacementstring)
    参数说明:
    character_expression:是函数要搜索的有效字符表达式。
    searchstring:是函数尝试定位的有效字符表达式。
    replacementstring:是用作替换表达式的有效字符表达式
  • REVERSE
    REVERSE函数按相反顺序返回字符表达式。
    语法如下:
    REVERSE(character_expression)
    参数说明:
    character_expression:是要反转的字符表达式。
  • STR
    STR函数返回由数字数据转换来的字符数据。语法如下:
    STR ( float_expression [ , length [ , decimal ] ] )
    参数说明:
    float_expression:带小数点的近似数字 (float) 数据类型的表达式。
    length:总长度。它包括小数点、符号、数字以及空格。默认值为 10。
    decimal:小数点后的位数。decimal 必须小于或等于 16。如果 decimal 大于 16,则会截断结果,使其保持为小数点后具有十六位。
  • SUBSTRING
    SUBSTRING函数为字符表达式、二进制表达式、文本表达式或图像表达式的一部分。
    语法如下:
    SUBSTRING ( value_expression ,start_expression , length_expression )
    参数说明:
    value_expression:是 character、binary、text、ntext 或 image 表达式。
    start_expression:指定返回字符的起始位置的整数或 bigint 表达式。如果 start_expression 小于 0,会生成错误并终止语句。如果 start_expression 大于值表达式中的字符数,将返回一个零长度的表达式。
    length_expression:是正整数或指定要返回的 value_expression 的字符数的 bigint 表达式。如果 length_expression 是负数,会生成错误并终止语句。如果 start_expression 与 length_expression 的总和大于 value_expression 中的字符数,则返回整个值表达式。
    返回类型:如果 expression 是受支持的字符数据类型,则返回字符数据。如果 expression 是支持的 binary 数据类型中的一种数据类型,则返回二进制数据。

具体代码操作如下:

字符串
	 --ASCII表
	 SELECT ASCII('a')
	 SELECT ASCII(2)	 
	 --CHARINDEX函数
	 SELECT CHARINDEX('猴三棍',NAME) AS "泼猴" FROM table4 WHERE ID=66666	 
	 --LEFT函数
	 SELECT LEFT(NAME,1) AS "姓氏",COUNT(LEFT(NAME,1)) AS "数量" FROM table4 GROUP BY LEFT(NAME,1)
	 --RIGHT
	 SELECT RIGHT(NAME,1) AS "名",COUNT(RIGHT(NAME,1)) AS "数量" FROM table4 GROUP BY RIGHT(NAME,1)
	 --LEn函数
	 SELECT LEN(1234656) AS "字符个数"
	 SELECT LEN('昨夜雨疏风骤,浓睡不消残酒,试问卷帘人却道海棠依旧,知否知否') AS "字符个数"
	 --REPLACE函数
	 SELECT REPLACE('亡羊补牢,为时不晚','为时不晚','为时已晚') AS "替换结果"
	 --REVERSE函数
	 SELECT REVERSE('我爱你,亲') AS "反转结果"
	 --STR函数
	 SELECT STR(123.6235) AS "STR"
	 SELECT STR(123.6235,10,5) AS "STR"
	 SELECT STR(123.6235) AS "STR"
	 --SUBSTRING函数
	 SELECT Pwd, SUBSTRING(Pwd,2,3) AS "编号" FROM table4

日期时间函数

在这里插入图片描述

  • GETDATE
    GETDATE函数返回系统的当前日期。GETDATE 函数不使用参数。
    注意:
    GETDATE 函数的返回结果的长度为 29 个字符。

    语法如下:
    GETDATE()
  • DAY
    DAY函数返回一个整数,表示日期的“日”部分。
    语法如下:
    DAY(date)
    参数说明:
    date:以日期格式返回有效的日期或字符串的表达式
  • MONTH
    MONTH函数返回一个表示日期中的“月份”日期部分的整数。
    语法如下:
    MONTH(date)
    参数说明:
    date:是任意日期格式的日期
  • YEAR
    YEAR函数用于返回指定日期的年份。
    语法如下:
    YEAR (date)
    参数说明:
    date表示返回类型为datetime或smalldatetime的日期表达式。
    有关YEAR函数使用的几点说明如下:
    该函数等价于DATEPART(yy,date)。
    SQL Server数据库将0解释为1900年1月1日。
    在使用日期函数时,其日期只应在1753~9999年之间,这是SQL Server系统所能识别的日期范围,否则会出现错误。
  • Datediff
    DATEDIFF函数用于返回日期和时间的边界数。
    语法如下:
    DATEDIFF (datepart,startdate,enddate)
    参数说明:
    datepart规定了应在日期的哪一部分计算差额的参数。
    startdate表示计算的开始日期,startdate是返回datetime值、smalldatetime值或日期格式字符串的表达式。
    enddate表示计算的终止日期。enddate是返回datetime值、smalldatetime值或日期格式字符串的表达式。
    SQL Server识别的日期部分和缩写。
  • DateADD
    DATEADD函数将表示日期或时间间隔的数值与日期中指定的日期部分相加后,返回一个新的 DT_DBTIMESTAMP 值。number 参数的值必须为整数,而 date 参数的取值必须为有效日期。
    语法如下:
    DATEADD(datepart, number, date)
    参数说明:
    datepart:指定要与数值相加的日期部分的参数。
    number:用于与 datepart 相加的值。该值必须是分析表达式时已知的整数值。
    date:返回有效日期或日期格式的字符串的表达式。
    注意:如果指定一个不是整数的值,则将废弃此值的小数部分。
时间日期函数
	 --GETDATE函数
	 SELECT  GETDATE() AS "现在时间"
	 --DAY函数
	 SELECT DAY('2018-1-16') AS "DAY"
	 SELECT DAY(GETDATE()) AS "DAY"
	 --MONTH函数
	 SELECT MONTH(GETDATE()) AS "MONTH"
	 --year函数
	 SELECT YEAR(GETDATE()) AS "YEAR"
	 --Datediff函数
	 SELECT Datediff(YEAR,GETDATE(),'2000-2-22') AS "Datediff"
	 --DateADD函数
	 SELECT  GETDATE() AS "现在时间"
	 SELECT DateADD(MONTH,1,GETDATE()) AS DateADD

















如需详解请留言~

猜你喜欢

转载自blog.csdn.net/weixin_43437202/article/details/87878650
今日推荐