SQL函数

SQL函数

聚合函数

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

SUM(求和)函数

SUM函数返回表达式中所有值的和或仅非重复值的和。SUM 只能用于数字列。空值将被忽略。
语法如下:
SUM ( [ ALL | DISTINCT ] expression )

AVG(平均值)函数

AVG函数返回组中各值的平均值。将忽略空值。
语法如下:
AVG ( [ ALL | DISTINCT ] expression )

MIN(最小值)函数

MIN函数返回表达式中的最小值。
语法如下:
MIN ( [ ALL | DISTINCT ] expression )

MAX(最大值)函数

MAX函数返回表达式的最大值。
语法如下:
MAX ( [ ALL | DISTINCT ] expression )

COUNT(统计)函数

COUNT函数返回组中的项数。COUNT 返回 int 数据类型值。
语法如下:
COUNT ( { [ [ ALL | DISTINCT ] expression ] | * } )

DISTINCT(取不重复记录)函数

DISTINCT函数,对指定的集求值,删除该集中的重复元组,然后返回结果集。
语法如下:
Distinct(Set_Expression)

HAVING(查询重复记录)函数

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

HAVING子句语法如下:
[ HAVING <search condition> ]

数学函数

ABS(绝对值)函数

ABS函数返回数值表达式的绝对值。
语法如下:
ABS(numeric_expression)

PI(圆周率)函数

PI函数返回 PI 的常量值。
语法如下:
PI ( )
返回类型:float型

POWER(乘方)函数

POWER函数返回对数值表达式进行幂运算的结果。Power 函数的计算结果必须为整数。
语法如下:
POWER(numeric_expression,power)

RAND(随机浮点)函数

RAND函数返回从 0 到 1 之间的随机 float 值。
语法如下:
RAND ( [ seed ] )

ROUND(四舍五入)函数

ROUND函数返回一个数值,舍入到指定的长度或精度。
语法如下:
ROUND ( numeric_expression , length [ ,function ] )

SQUARE(平方)函数

SQUARE(平方)函数
SQUARE函数返回数值表达式的平方。语法说明如下:
SQUARE(numeric_expression)

SQRT(平方根)函数

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

三角函数
COS函数

返回指定表达式中以弧度表示的指定角的三角余弦。
语法如下:
COS ( float_expression )

COT函数

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

SIN函数

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

TAN函数

TAN函数返回输入表达式的正切值。
语法如下:
TAN ( float_expression )

字符串函数

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

ASCII(获取ASCII码)函数

ASCII函数返回字符表达式中最左侧的字符的 ASCII 代码值。
语法如下:
ASCII ( character_expression )

CHARINDEX函数

CHARINDEX函数返回字符串中指定表达式的起始位置(如果找到)。搜索的起始位置为 start_location。
语法如下:
CHARINDEX ( expression1 ,expression2 [ , start_location ] )

LEFT函数

LEFT函数返回字符串中从左边开始指定个数的字符。
语法如下:
LEFT ( character_expression , integer_expression )

RIGHT函数

RIGHT函数返回字符表达式中从起始位置(从右端开始)到指定字符位置(从右端开始计数)的部分。
语法如下:
RIGHT(character_expression,integer_expression)

LEN函数

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

REPLACE函数

REPLACE函数将表达式中的一个字符串替换为另一个字符串或空字符串后,返回一个字符表达式。语法如下:
REPLACE(character_expression,searchstring,replacementstring)

REVERSE函数

REVERSE函数按相反顺序返回字符表达式。
语法如下:
REVERSE(character_expression)

STR函数

STR函数返回由数字数据转换来的字符数据。语法如下:
STR ( float_expression [ , length [ , decimal ] ] )

SUBSTRING函数

SUBSTRING函数为字符表达式、二进制表达式、文本表达式或图像表达式的一部分。
语法如下:
SUBSTRING ( value_expression ,start_expression , length_expression )

日期时间函数

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

GETDATE函数

GETDATE函数返回系统的当前日期。GETDATE 函数不使用参数。
注意:
​ GETDATE 函数的返回结果的长度为 29 个字符。
语法如下:
GETDATE()

DAY函数

DAY函数返回一个整数,表示日期的“日”部分。
语法如下:
DAY(DATE)

MONTH函数

MONTH函数返回一个表示日期中的“月份”日期部分的整数。
语法如下:
MONTH(DATE)

YEAR函数

YEAR函数用于返回指定日期的年份。
语法如下:
MONTH(DATE)

DATEDIFF函数

DATEDIFF函数用于返回日期和时间的边界数。
语法如下:
DATEDIFF (datepart,startdate,enddate)

DATEADD函数

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

转换函数

在SQL Server中数据类型转换分为两种,分别如下:
隐性转换:SQL Server自动处理某些数据类型的转换。例如,如果比较char和datetime表达式、smallint和int表达式、或不同长度的char表达式,SQL Server可将它们自动转换,这种转换称为隐性转换,对这些转换不必使用CAST函数。
显式转换:显式转换是指CAST和CONVERT函数,CAST和CONVERT函数将数值从一种数据类型(局部变量、列或其他表达式)转换到另一种数据类型。
说明:
​ 隐性转换对用户是不可见的,SQL Server自动将数据从一种数据类型转换成另一种数据类型。例如,如果一个smallint 变量和一个int变量相比较,这个smallint变量在比较前即被隐性转换成int变量。

CAST函数

CAST函数用于将某种数据类型的表达式显示转换为另一种数据类型。
语法如下:
CAST (expression AS data_type[(length)])

CONVERT函数

CONVERT函数与CAST函数的功能相似。该函数不是一个ANSI标准SQL函数,它可以按照指定的格式将数据转换为另一种数据类型。
语法如下:
CONVERT (data_type[ (length) ],expression [, style])

元数据函数

元数据函数描述了数据的结构和意义,它主要用于返回数据库中的相应信息,其中包括:
返回数据库中数据表或视图的个数和名称。
返回数据表中数据字段的名称、数据类型、长度等描述信息。
返回数据表中定义的约束、索引、主键或外键等信息。

COL_LENGTH函数

COL_LENGTH函数用于返回列的定义长度。
语法如下:
COL_LENGTH ( ‘table’ , ‘column’ )

COL_NAME函数

COL_NAME函数根据指定的对应表标识号和列标识号返回列的名称。
语法如下:
COL_NAME ( table_id , column_id )

DB_NAME函数

DB_NAME函数返回数据库名称。
语法如下:
DB_NAME ( [ database_id ] )

GROUPING SETS

GROUPING SETS、ROLLUP和CUBE运算符是GROUP BY 子句的扩展。运用ROLLUP或CUBE运算符可以生成全部分组,而使用GROUPING SETS运算符可以仅指定所需的分组。

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

下面代码是用来检测约束冲突的,如果与check约束冲突,@@ERROR被赋值547,并提示错误信息。但使用@@ERROR却检测不到约束冲突。
IF @@ERROR = 547
print ‘A check constraint violation occurred’
​ 答:@@ERROR返回的是与它紧挨着的语句的执行情况。如果IF @@ERROR = 547与被检测语句之间有其他语句(如GO),则@@ERROR不会检测到正确的值。

SELECT * FROM CLASSINFOR
--DISTINCT:指定 SUM 返回唯一值的和。
--总和
SELECT SUM( DISTINCT (AGE)) FROM CLASSINFOR
--平均值
SELECT AVG(AGE) FROM CLASSINFOR
--最小值
SELECT MIN(AGE) FROM CLASSINFOR
--最大值
SELECT MAX(AGE) FROM CLASSINFOR
--总数
SELECT COUNT(*) FROM CLASSINFOR
--HAVING:查询数据表中的重复记录
SELECT AGE,COUNT(AGE) FROM CLASSINFOR
GROUP BY AGE
HAVING AGE>1
--绝对值
SELECT ABS(3-5) AS '绝对值'
--圆周率
SELECT PI() AS '圆周率'
--乘方
SELECT POWER(2,5) AS '乘方'
--RAND函数返回从 0 到 1 之间的随机 float 值
SELECT RAND(100)
--ROUND:四舍五入
SELECT ROUND(521.525,2)
--平方
SELECT SQUARE(2) AS '2的平方'
--平方根
SELECT SQRT(9) AS '9的平方根'
--COS函数:返回指定表达式中以弧度表示的指定角的三角余弦。
DECLARE @A FLOAT
SET @A=30
SELECT CONVERT(VARCHAR,COS(@A)) AS COS
GO
--COT函数:返回指定的 float 表达式中所指定角度(以弧度为单位)的三角余切值
DECLARE @A FLOAT
SET @A=10
SELECT CONVERT(VARCHAR,COT(@A)) AS COT
GO
--SIN函数:以近似数字 (float) 表达式返回指定角度(以弧度为单位)的三角正弦值
DECLARE @A FLOAT
SET @A=16
SELECT CONVERT(VARCHAR,SIN(@A)) AS SIN
GO
--TAN函数返回输入表达式的正切值
DECLARE @A FLOAT
SET @A=16
SELECT CONVERT(VARCHAR,TAN(@A)) AS TAN
GO
--ASCII
--DECLARE @POSITION INT,@STRING CHAR(3)
--SET @POSITION=1
--SET @STRING='nxt'
--WHILE @POSITION<=DATALENGTH(@STRING)
--BEGIN
--SELECT ASCII(SUBSTRING(@STRING,@POSITION,1))
--END
--CHARINDEX函数返回字符串中指定表达式的起始位置(如果找到)。搜索的起始位置为 start_location
SELECT CHARINDEX('跳舞','跳舞') AS '起始位置' FROM CLASSINFOR WHERE ID=10000
--LEFT函数返回字符串中从左边开始指定个数的字符。
SELECT ID,NAME FROM CLASSINFOR
SELECT LEFT(NAME,1) AS '姓氏',
COUNT (LEFT(NAME,1)) AS '数量'
FROM CLASSINFOR GROUP BY LEFT(NAME,1)
--RIGHT:返回字符表达式中从起始位置(从右端开始)到指定字符位置(从右端开始计数)的部分
SELECT ID,NAME FROM CLASSINFOR
SELECT RIGHT(ID,3) AS 'ID',NAME,SEX FROM CLASSINFOR
-- LEN函数返回字符表达式中的字符数。如果字符串中包含前导空格和尾随空格,则函数会将它们包含在计数内。
--LEN对相同的单字节和双字节字符串返回相同的值
SELECT LEN(23456) AS '字符个数'
SELECT LEN('梦不落雨林-张艺兴') AS '字符个数'
--REPLACE函数将表达式中的一个字符串替换为另一个字符串或空字符串后,返回一个字符表达式
SELECT REPLACE('ZHANGLAY','LAY','YIXING') AS '替换结果'
--REVERSE函数按相反顺序返回字符表达式
SELECT REVERSE('兴艺张') AS '反转结果'
SELECT REVERSE('YAL') AS '反转结果'
--STR函数返回由数字数据转换来的字符数据
SELECT STR(123.45)
SELECT STR(123.43,8,1)
--SUBSTRING函数为字符表达式、二进制表达式、文本表达式或图像表达式的一部分
SELECT HOBBY,SUBSTRING(Hobby,2,2) AS '编号' FROM CLASSINFOR
--GETDATE函数返回系统的当前日期。GETDATE 函数不使用参数
SELECT GETDATE() AS '当前时间'
--DAY函数返回一个整数,表示日期的“日”部分
SELECT DAY('2019-2-22') AS 'DAY'
SELECT DAY('2019/2/22') AS 'DAY'
SELECT DAY(GETDATE()) AS 'DAY'
--MONTH函数返回一个表示日期中的“月份”日期部分的整数
SELECT MONTH(GETDATE()) AS 'MONTH'
--YEAR函数用于返回指定日期的年份
SELECT YEAR(GETDATE()) AS 'YEAR'
--DATEDIFF函数用于返回日期和时间的边界数
SELECT DATEDIFF(MONTH,'2019-01-01','2019-02-01')AS '时间差'
SELECT DATEDIFF(DAY,'2019-01-01','2019-02-01')AS '时间差'
--DateADD函数
SELECT GETDATE() AS 当前系统时间
SELECT DATEADD(MONTH,1,GETDATE()) AS 下月时间
--转换函数
--CAST函数用于将某种数据类型的表达式显示转换为另一种数据类型
SELECT CAST('ZHNAGYIXING'AS NVARCHAR(8)) AS 结果
--Convert函数:可以按照指定的格式将数据转换为另一种数据类型
SELECT 
GETDATE() AS G,
CAST(GETDATE()AS datetime)AS D,
CONVERT(datetime,GETDATE(),126) AS C
--元数据函数描述了数据的结构和意义,它主要用于返回数据库中的相应信息
--COL_LENGTH函数用于返回列的定义长度
USE DB_0221
CREATE TABLE MYTABLE
(
USERID INT,
USERNAME VARCHAR(20),
USERSEX NVARCHAR(2),
USERBIRTHDAY DATETIME,
USERADDRESS TEXT
)
GO
SELECT 
COL_LENGTH('MYTABLE','USERID') AS 'INT类型长度',
COL_LENGTH('MYTABLE','USERNAME') AS 'VARCHAR类型长度',
COL_LENGTH('MYTABLE','USERSEX') AS 'NVARCHAR类型长度',
COL_LENGTH('MYTABLE','USERBIRTHDAY') AS 'DATETIME类型长度',
COL_LENGTH('MYTABLE','USERADDRESS') AS 'TEXT类型长度'
GO
--COL_NAME函数根据指定的对应表标识号和列标识号返回列的名称
USE DB_0221
GO
--当SET NOCOUNT为ON时,不返回计数(表示受Transact-SQL语句影响的行数)
--当SET NOCOUNT为OFF时,返回计数(默认为OFF)
SET NOCOUNT OFF
GO
SELECT COL_NAME(OBJECT_ID('ID'),1)
GO
--DB_NAME函数返回数据库名称
SELECT DB_NAME() AS [CURRENT DATABASE]
GO
--查询年龄最大的和最小的
SELECT ID,NAME,AGE FROM CLASSINFOR WHERE AGE=(SELECT MAX(AGE) FROM CLASSINFOR)
SELECT ID,NAME,AGE FROM CLASSINFOR WHERE AGE=(SELECT MIN(AGE) FROM CLASSINFOR)
--GROUPING SETS
--USE DB_0221
--GO
--SELECT ID,NAME,HOBBY AS 年龄 FROM CLASSINFOR GROUP BY GROUPING SETS(HOBBY,NAME)



列举了SQL语句中大部分常用的函数 Abs(number) 取得数值的绝对值。 Asc(String) 取得字符串表达式的第一个字符ASCII 码。 Atn(number) 取得一个角度的反正切值。 CallByName (object, procname, usecalltype,[args()]) 执行一个对象的方法、设定或传回对象的属性。 CBool(expression) 转换表达式为Boolean 型态。 CByte(expression) 转换表达式为Byte 型态。 CChar(expression) 转换表达式为字符型态。 CDate(expression) 转换表达式为Date 型态。 CDbl(expression) 转换表达式为Double 型态。 CDec(expression) 转换表达式为Decimal 型态。 CInt(expression) 转换表达式为Integer 型态。 CLng(expression) 转换表达式为Long 型态。 CObj(expression) 转换表达式为Object 型态。 CShort(expression) 转换表达式为Short 型态。 CSng(expression) 转换表达式为Single 型态。 CStr(expression) 转换表达式为String 型态。 Choose (index, choice-1[, choice-2, ... [, choice-n]]) 以索引值来选择并传回所设定的参数。 Chr(charcode) 以ASCII 码来取得字符内容。 Close(filenumberlist) 结束使用Open 开启的档案。 Cos(number) 取得一个角度的余弦值。 Ctype(expression, typename) 转换表达式的型态。 DateAdd(dateinterval, number, datetime) 对日期或时间作加减。 DateDiff(dateinterval, date1, date2) 计算两个日期或时间间的差值。 DatePart (dateinterval, date) 依接收的日期或时间参数传回年、月、日或时间。 DateSerial(year, month, day) 将接收的参数合并为一个只有日期的Date 型态的数据。 DateValue(datetime) 取得符合国别设定样式的日期值,并包含时间。 Day(datetime) 依接收的日期参数传回日 ....
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值