失眠网,内容丰富有趣,生活中的好帮手!
失眠网 > SQL Server~函数

SQL Server~函数

时间:2024-03-09 04:10:42

相关推荐

SQL Server~函数

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。 本文链接:/qq_43434300/article/details/87881821

一.聚合函数

1.概述

聚合函数对一组值进行计算并返回单一的值,通常聚合函数会与SELECT语句的GROUP BY子句一同使用,在与GROUP BY子句使用时,聚合函数会为每一个组产生一个单一值,而不会为整个表产生一个单一值。常用的聚合函数及说明。

2.SUM(求和)函数

SUM函数返回表达式中所有值的和或仅非重复值的和。SUM 只能用于数字列。空值将被忽略。

(1)语法如下:

SUM ( [ ALL | DISTINCT ] expression )

(2)参数说明:

①ALL:对所有的值应用此聚合函数。ALL是默认值。

②DISTINCT:指定 SUM 返回唯一值的和。

③expression:常量、列或函数与算术、位和字符串运算符的任意组合。expression 是精确数字或近似数字数据类型分类(bit 数据类型除外)的表达式。

(3)返回类型:以最精确的 expression 数据类型返回所有 expression 值的和。

(4)有关SUM函数使用的几点说明如下。

①含有索引的字段能够加快聚合函数的运行。

②字段数据类型为int、smallint、tinyint、decimal、numeric、float、real、money以及smallmoney的字段才可以使用SUM函数。

③在使用SUM函数时,SQL Server把结果集中的smallint或tinyint这些数据类型当做int处理。

④在使用SUM函数时,SQL Server将忽略空值(NULL),即计算时不计算这些空值。

3.MIN(最小值)函数

MIN函数返回表达式中的最小值。

(1)语法如下:

MIN ( [ ALL | DISTINCT ] expression )

(2)参数说明:

①ALL:对所有的值进行聚合函数运算。ALL 是默认值。

②DISTINCT:指定每个唯一值都被考虑。DISTINCT 对于 MIN 无意义,使用它仅仅是为了符合 SQL-92 兼容性。

③expression:常量、列名、函数以及算术运算符、按位运算符和字符串运算符的任意组合。MIN 可用于数字列、char列、varchar列 或 datetime 列,但不能用于 bit 列。不允许使用聚合函数和子查询

返回类型:返回与 expression 相同的值。

(3)有关MIN函数使用的几点说明如下:

①MIN函数不能用于数据类型是bit的字段。

②在确定列中的最小值时,MIN函数忽略NULL值,但是如果在该列中的所有行都有NULL值,将返回NULL值。

③不允许使用聚合函数和子查询。

4.MAX(最大值)函数

MAX函数返回表达式的最大值。

(1)语法如下:

MAX ( [ ALL | DISTINCT ] expression )

(2)参数说明:

①ALL:对所有的值应用此聚合函数。ALL 是默认值。

②DISTINCT:指定考虑每个唯一值。DISTINCT 对于 MAX 无意义,使用它仅仅是为了SQL-92 兼容性

③expression:常量、列名、函数以及算术运算符、按位运算符和字符串运算符的任意组合。MAX 可用于数字列、character列和 datetime列,但不能用于 bit 列。不允许使用聚合函数和子查询。

(3)返回类型:返回与 expression 相同的值。

(4)有关MAX函数使用的几点说明如下:

①MAX函数将忽略选取对象中的空值。

②不能通过MAX函数从bit、text和image数据类型的字段中选取最大值。

③在SQL Server中,MAX函数可以用于数据类型为数字、字符、datetime的列,但是不能用于数据类型为bit的列。不能使用聚合函数和子查询。

④对于字符列,MAX查找排序序列的最大值。

5.COUNT(统计)函数

COUNT函数返回组中的项数。COUNT 返回 int 数据类型值。

(1)语法如下:

COUNT ( { [ [ ALL | DISTINCT ] expression ] | ∗} )

(2)参数说明:

①ALL:对所有的值进行聚合函数运算。ALL 是默认值。

②DISTINCT:指定 COUNT 返回唯一非空值的数量。

③expression:除 text、image 或 ntext 以外任何类型的表达式。不允许使用聚合函数和子查询。

④ ∗:指定应该计算所有行以返回表中行的总数。COUNT(∗) 不需要任何参数,而且不能与 DISTINCT 一起使用。COUNT(∗) 不需要 expression 参数,因为根据定义,该函数不使用有关任何特定列的信息。COUNT(∗) 返回指定表中行数而不删除副本。它对每行分别计数。包括包含空值的行。

(3)返回类型:int类型。

6.HAVING(查询重复记录)函数

HAVING函数,查询数据表中的重复记录,可以借助HAVING子句实现,该子句用来指定组或聚合的搜索条件。HAVING子句只能与SELECT语句一起使用,而且,它通常在GROUP BY子句中使用。

(1)HAVING子句语法如下:

[ HAVING <search condition> ]

(2)参数说明:

<search condition>:指定组或聚合应满足的搜索条件。

例:

二.数学函数

1.概述

数学函数可以对数据类型为整型(integer)、实型(real)、浮点型(float)、货币型(money)和smallmoney的列进行操作。它的返回值是6位小数,如果使用出错,则返回NULL值并显示提示信息,通常该函数可以用在SQL语句的表达式中。常用的数学函数及说明。

注意:

算术函数(例如 ABS、CEILING、DEGREES、FLOOR、POWER、RADIANS 和 SIGN)返回与输入值具有相同数据类型的值。三角函数和其他函数(包括 EXP、LOG、LOG10、SQUARE 和 SQRT)将输入值转换为 float 并返回 float 值。

2.ABS(绝对值)函数

ABS函数返回数值表达式的绝对值。

(1)语法如下:

ABS(numeric_expression)

(2)参数说明:

numeric_expression:精确数字或近似数字数据类型类别的表达式(bit 数据类型除外)。

(3)返回类型:提交给函数的数值表达式的数据类型。

说明:

如果该参数为空,则 ABS 返回的结果为空。

3.PI(圆周率)函数

PI函数返回 PI 的常量值。

语法如下:

PI ( )

返回类型:float型。

4.POWER(乘方)函数

POWER函数返回对数值表达式进行幂运算的结果。Power 函数的计算结果必须为整数。

(1)语法如下:

POWER(numeric_expression,power)

(2)参数说明:

①numeric_expression:是精确数字或近似数字数据类型类别的表达式(bit 数据类型除外)。

②power:有效的数值表达式。

5.rand(随机浮点)函数

RAND函数返回从 0 到 1 之间的随机 float 值。

(1)语法如下:

RAND ( [ seed ] )

(2)参数说明:

seed:提供种子值的整数表达式(tinyint、smallint 或 int)。如果未指定 seed,则 Microsoft SQL Server 数据库引擎 随机分配种子值。对于指定的种子值,返回的结果始终相同。

(3)返回类型:float类型。

注意:

使用同一个种子值重复调用 RAND() 会返回相同的结果。

6.ROUND(四舍五入)函数

ROUND函数返回一个数值,舍入到指定的长度或精度。

(1)语法如下:

ROUND ( numeric_expression , length [ ,function ] )

(2)参数说明:

①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。

(3)返回类型:返回与 numeric_expression 相同的类型。

7.square(平方)函数

SQUARE(平方)函数

SQUARE函数返回数值表达式的平方。

语法说明如下:

SQUARE(numeric_expression)

参数说明:

numeric_expression:任意数值数据类型的数值表达式。

8.sqrt(平方根)函数

SQRT(平方根)函数

SQRT函数返回数值表达式的平方根。语法如下:

SQRT(numeric_expression)

参数说明:

numeric_expression 是任意数值数据类型的数值表达式。

9.三角函数

三角函数包括COS、COT、SIN以及TAN函数,分别表示为三角余弦值、三角余切值、三角正弦值和三角正切值,下面分别对这几种三角函数进行详细讲解。

(1)COS函数

返回指定表达式中以弧度表示的指定角的三角余弦。

①语法如下:

COS ( float_expression )

②参数说明:

float_expression:float 类型的表达式。

③返回类型:float类型

(2)COT函数

COT函数返回指定的 float 表达式中所指定角度(以弧度为单位)的三角余切值。

①语法如下:

COT ( float_expression )

②参数说明:

float_expression:属于 float 类型或能够隐式转换为 float 类型的表达式。

③返回类型:float类型。

(3)SIN函数

SIN函数以近似数字 (float) 表达式返回指定角度(以弧度为单位)的三角正弦值。

①语法如下:

SIN ( float_expression )

②参数说明:

float_expression:属于 float 类型或能够隐式转换为 float 类型的表达式。

③返回类型:float类型。

(4)TAN函数

TAN函数返回输入表达式的正切值。

①语法如下:

TAN ( float_expression )

②参数说明:

float_expression:是 float 类型或可隐式转换为 float 类型的表达式,解释为弧度数。

③返回类型:float类型。

例:

三.字符串函数

1.概述

字符串函数作用于char、varchar、binary和varbinary数据类型以及可以隐式转换为char或varchar的数据类型。通常字符串函数可以用在SQL语句的表达式中。常用的字符串函数及说明。

2.ASCII(获取ASCII码)函数

ASCII函数返回字符表达式中最左侧的字符的 ASCII 代码值。

(1)语法如下:

ASCII ( character_expression )

(2)参数说明:

character_expression:char 或 varchar 类型的表达式。

(3)返回类型:int类型。

说明:

ASCII码共有127个,其中Microsoft Windows不支持1~7、11~12和14~31之间的字符。值8、9、10和13分别转换为退格、制表、换行和回车字符。它们并没有特定的图形显示,但会依不同的应用程序而对文本显示有不同的影响。

(4)ASCII码值对照表如表。

3.CHARINDEX函数

CHARINDEX函数返回字符串中指定表达式的起始位置(如果找到)。搜索的起始位置为 start_location。

(1)语法如下:

CHARINDEX ( expression1 ,expression2 [ , start_location ] )

(2)参数说明:

expression1:包含要查找的序列的字符表达式。expression1 最大长度限制为 8000 个字符。

expression2:要搜索的字符表达式。

start_location:在 expression2 中搜索 expression1 时的起始字符位置。如果没有给定 start_location,而是一个负数或零,则将从 expression2 的起始位置开始搜索。

(3)返回类型:如果 expression2 的数据类型为 varchar(max)、nvarchar(max) 或 varbinary(max),则为 bigint,否则为 int。

4.LEFT函数

LEFT函数返回字符串中从左边开始指定个数的字符。

(1)语法如下:

LEFT ( character_expression , integer_expression )

(2)参数说明:

character_expression:字符或二进制数据表达式。character_expression 可以是常量、变量或列。character_expression 可以是任何能够隐式转换为 varchar 的数据类型。否则,请使用 CAST 函数对 character_expression 进行显式转换。

integer_expression:正整数。如果 integer_expression 为负,则返回空字符串。

(3)返回类型:

当 character_expression 为非 Unicode 字符数据类型时,返回 varchar。

当 character_expression 为 Unicode 字符数据类型时,返回 nvarchar。

5.right函数

RIGHT函数返回字符表达式中从起始位置(从右端开始)到指定字符位置(从右端开始计数)的部分。

(1)语法如下:

RIGHT(character_expression,integer_expression)

(2)参数说明:

character_expression:是从中提取字符的字符表达式。

integer_expression:是起始位置,用正整数表示。如果 integer_expression 是负数,则返回一个错误。

6.LEn函数

LEN函数返回字符表达式中的字符数。如果字符串中包含前导空格和尾随空格,则函数会将它们包含在计数内。LEN 对相同的单字节和双字节字符串返回相同的值。

(1)语法如下:

LEN(string_expression)

(2)参数说明:

string_expression:要计算的字符串表达式。

7.REPLACE函数

REPLACE函数将表达式中的一个字符串替换为另一个字符串或空字符串后,返回一个字符表达式。

(1)语法如下:

REPLACE(character_expression,searchstring,replacementstring)

(2)参数说明:

character_expression:是函数要搜索的有效字符表达式。

searchstring:是函数尝试定位的有效字符表达式。

replacementstring:是用作替换表达式的有效字符表达式。

8.REVERSE函数

REVERSE函数按相反顺序返回字符表达式。

(1)语法如下:

REVERSE(character_expression)

(2)参数说明:

character_expression:是要反转的字符表达式。

9.STR函数

STR函数返回由数字数据转换来的字符数据。

(1)语法如下:

STR ( float_expression [ , length [ , decimal ] ] )

(2)参数说明:

float_expression:带小数点的近似数字 (float) 数据类型的表达式。

length:总长度。它包括小数点、符号、数字以及空格。默认值为 10。

decimal:小数点后的位数。decimal 必须小于或等于 16。如果 decimal 大于 16,则会截断结果,使其保持为小数点后具有十六位。

注意:

当表达式超出指定长度时,字符串为指定长度返回 ∗∗。

10.SUBSTRING函数

SUBSTRING函数为字符表达式、二进制表达式、文本表达式或图像表达式的一部分。

(1)语法如下:

SUBSTRING ( value_expression ,start_expression , length_expression )

(2)参数说明:

①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 中的字符数,则返回整个值表达式。

(3)返回类型:如果 expression 是受支持的字符数据类型,则返回字符数据。如果 expression 是支持的 binary 数据类型中的一种数据类型,则返回二进制数据。

(4)返回的字符串类型与指定表达式的类型相同

例:

四.日期时间函数

1.概述

日期和时间函数主要用来操作datetime、smalldatetime类型的数据,日期和时间函数执行算术运行与其他函数一样,也可以在SQL语句的SELECT、WHERE子句以及表达式中使用。常用的日期时间函数及说明。

2.GETDATE函数

GETDATE函数返回系统的当前日期。GETDATE 函数不使用参数。

注意:

GETDATE 函数的返回结果的长度为 29 个字符。

语法如下:

GETDATE()

3.DAY函数

DAY函数返回一个整数,表示日期的“日”部分。

语法如下:

DAY(date)

参数说明:

date:以日期格式返回有效的日期或字符串的表达式。

4.MONTH函数

MONTH函数返回一个表示日期中的“月份”日期部分的整数。

语法如下:

MONTH(date)

参数说明:

date:是任意日期格式的日期。

5.year函数

YEAR函数用于返回指定日期的年份。

(1)语法如下:

YEAR (date)

(2)参数说明:

date表示返回类型为datetime或smalldatetime的日期表达式。

(3)有关YEAR函数使用的几点说明如下:

该函数等价于DATEPART(yy,date)。

SQL Server数据库将0解释为1900年1月1日。

在使用日期函数时,其日期只应在1753~9999年之间,这是SQL Server系统所能识别的日期范围,否则会出现错误。

6.Datediff函数

DATEDIFF函数用于返回日期和时间的边界数。

(1)语法如下:

DATEDIFF (datepart,startdate,enddate)

(2)参数说明:

①datepart规定了应在日期的哪一部分计算差额的参数。

②startdate表示计算的开始日期,startdate是返回datetime值、smalldatetime值或日期格式字符串的表达式。

③enddate表示计算的终止日期。enddate是返回datetime值、smalldatetime值或日期格式字符串的表达式。

(3)SQL Server识别的日期部分和缩写。

(4)有关DATEDIFF函数使用的几点说明如下:

①startdate是从enddate中减去。如果startdate比enddate晚,则返回负值。

②当结果超出整数值范围,DATEDIFF产生错误。对于毫秒,最大数是24天20小时31分钟零23.647秒。对于秒,最大数是68年。

③计算跨分钟、秒和毫秒这些边界的方法,使得DATEDIFF 给出的结果在全部数据类型中是一致的。结果是带正负号的整数值,其等于跨第一个和第二个日期间的datepart边界数。例如,在1月4日(星期日)和1月11日(星期日)之间的星期数是1。

7.DateADD函数

DATEADD函数将表示日期或时间间隔的数值与日期中指定的日期部分相加后,返回一个新的 DT_DBTIMESTAMP 值。number 参数的值必须为整数,而 date 参数的取值必须为有效日期。

(1)语法如下:

DATEADD(datepart, number, date)

(2)参数说明:

datepart:指定要与数值相加的日期部分的参数。

number:用于与 datepart 相加的值。该值必须是分析表达式时已知的整数值。

date:返回有效日期或日期格式的字符串的表达式。

注意:

如果指定一个不是整数的值,则将废弃此值的小数部分。

例:

五.转换函数

1.概述

当遇到类型转换的问题时,可以使用SQL Server所提供的CAST和CONVERT函数。这两种函数不但可以将指定的数据类型转换为另一种数据类型,还可用来获得各种特殊的数据格式。CAST和CONVERT函数都可用于选择列表、WHERE子句和允许使用表达式的任何地方。

(1)在SQL Server中数据类型转换分为两种,分别如下:

①隐性转换:SQL Server自动处理某些数据类型的转换。例如,如果比较char和datetime表达式、smallint和int表达式、或不同长度的char表达式,SQL Server可将它们自动转换,这种转换称为隐性转换,对这些转换不必使用CAST函数。

②显式转换:显式转换是指CAST和CONVERT函数,CAST和CONVERT函数将数值从一种数据类型(局部变量、列或其他表达式)转换到另一种数据类型。

说明:

隐性转换对用户是不可见的,SQL Server自动将数据从一种数据类型转换成另一种数据类型。例如,如果一个smallint 变量和一个int变量相比较,这个smallint变量在比较前即被隐性转换成int变量。

(2)有关转换函数使用的几点说明如下:

①CAST函数基于SQL-92标准并且优先于CONVERT。

②当从一个SQL Server对象的数据类型向另一个数据类型转换时,一些隐性和显式数据类型转换是不支持的。例如,nchar数值根本就不能被转换成image数值。nchar只能显式地转换成binary,隐性地转换到binary是不支持的。nchar可以显式地或者隐性地转换成nvarchar。

③当处理sql_variant数据类型时,SQL Server支持将具有其他数据类型的对象隐性转换成sql_variant类型。然而,SQL Server并不支持从sql_variant数据类型隐性地转换到其他数据类型的对象。

2.CAST函数

CAST函数用于将某种数据类型的表达式显示转换为另一种数据类型。

(1)语法如下:

CAST (expression AS data_type[(length)])

(2)参数说明:

①expression:表示任何有效的SQL Server表达式

②AS:用于分隔两个参数,在AS之前的是要处理的数据,在AS之后是要转换的数据类型。

③data_type:表示目标系统所提供的数据类型,包括xml、bigint和sql_variant,不能使用别名数据类型。

④length:指定目标数据类型长度的可选整数。默认值为30。.

(3)使用CAST函数进行数据类型转换时,在下列情况下能够被接受。

①两个表达式的数据类型完全相同。

②两个表达式可隐性转换。

③必须显式转换数据类型。

④如果试图进行不可能的转换(例如,将含有字母的 char 表达式转换为 int 类型),SQL Server 显示一条错误信息。

⑤如果转换时没有指定数据类型的长度,则SQL Server自动提供长度为30。

3.Convert函数

CONVERT函数与CAST函数的功能相似。该函数不是一个ANSI标准SQL函数,它可以按照指定的格式将数据转换为另一种数据类型。

(1)语法如下:

CONVERT (data_type[ (length) ],expression [, style])

(2)参数说明:

①data_type表示目标系统所提供的数据类型,包括bigint和sql_variant。不能使用用户定义的数据类型。

②length为nchar、nvarchar、char、varchar、binary和varbinary数据类型的可选参数。参数expression表示任何有效的SQL Server表达式。

③style为日期样式,指定当将datetime数据转换为某种字符数据时或将某种字符数据转换为datetime数据时会使用style中的样式。style日期样式。

(3)style日期样式

例:

六.元数据函数

1.简介

元数据函数描述了数据的结构和意义,它主要用于返回数据库中的相应信息,其中包括:

返回数据库中数据表或视图的个数和名称。

返回数据表中数据字段的名称、数据类型、长度等描述信息。

返回数据表中定义的约束、索引、主键或外键等信息。

常用的元数据函数及说明.

2.col_length函数

COL_LENGTH函数用于返回列的定义长度。

(1)语法如下:

COL_LENGTH ( ‘table’ , ‘column’ )

(2)参数说明:

‘table’要确定其列长度信息的表的名称。table是nvarchar类型的表达式。

‘column’要确定其长度的列的名称。column是nvarchar类型的表达式。

3.col_name函数

COL_NAME函数根据指定的对应表标识号和列标识号返回列的名称。

(1)语法如下:

COL_NAME ( table_id , column_id )

(2)参数说明:

table_id:包含数据库列的表的标识号,table_id 属于 int 类型。

column_id:表示列的标识号,column_id属于 int 类型。

4.DB_NAME函数

DB_NAME函数返回数据库名称。

(1)语法如下:

DB_NAME ( [ database_id ] )

(2)参数说明:

database_id:要返回的数据库的标识号 (ID)。database_id 的数据类型为int,无默认值。如果未指定 ID,则返回当前数据库名称。

(3)返回类型:nvarchar(128)类型。

例:

七.扩展

1.查看商品信息表中价格最贵的记录

例:

在数据表中查询一个具体的数据的信息是数据库的一个重要应用。本实例利用聚合函数中的MAX求最大值的函数,查询goods表的所有商品中价格最贵的商品。代码如下:

–打开数据库

select * from goods

–查询goods表

select gno,gname,price from goods where price=(select MAX(price) from goods)

查询效果。

2.使用GROUPING SETS组合多个分组结果集

GROUPING SETS、ROLLUP和CUBE运算符是GROUP BY 子句的扩展。运用ROLLUP或CUBE运算符可以生成全部分组,而使用GROUPING SETS运算符可以仅指定所需的分组。本实例通过使用分组查询中的GROUPING SETS运算符,在books表中,查询分别按照书名、出版社分组的销售价格。代码如下:

use db_

go

select 书名,出版社,SUM(单价) as 总计金额 from books

group by GROUPING sets(书名,出版社)

3.有约束冲突却不提示错误信息

下面代码是用来检测约束冲突的,如果与check约束冲突,@@ERROR被赋值547,并提示错误信息。但使用@@ERROR却检测不到约束冲突。

IF @@ERROR = 547

print ‘A check constraint violation occurred’

答:@@ERROR返回的是与它紧挨着的语句的执行情况。如果IF @@ERROR = 547与被检测语句之间有其他语句(如GO),则@@ERROR不会检测到正确的值。

4.T-SQL和SQL有什么区别?

答:SQL(Structured Query Language)是一种结构化查询语言,一般指标准数据库查询语言,它可以实现对数据以及关系数据库系统的管理,比如查询、更新,完成基本的数据库对象的定义、控制等功能,以及SQL语句的编写。T-SQL是SQL语言的扩展版本,是一种可以完成复杂逻辑的编程语言。T-SQL增加了流控制元素和各种功能函数,可以实现存储过程、触发器等的编写,让程式设计更加灵活。

</div><link href="/release/phoenix/mdeditor/markdown_views-e9f16cbbc2.css" rel="stylesheet"></div>

如果觉得《SQL Server~函数》对你有帮助,请点赞、收藏,并留下你的观点哦!

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。
相关阅读
SQL Server函数

SQL Server函数

2023-08-13

SQL Server 函数

SQL Server 函数

2024-03-25

Sql Server 常用函数

Sql Server 常用函数

2023-08-30

SQL Server基本函数

SQL Server基本函数

2024-03-29