SQL函数大全及示例汇总

概述

SQL中包含以下七种类型的函数:

  1. 聚合函数:返回汇总值。
  2. 转型函数:将一种数据类型转换为另外一种。
  3. 日期函数:处理日期和时间。
  4. 数学函数:执行算术运算。
  5. 字符串函数:对字符串、二进制数据或表达式执行操作。
  6. 系统函数:从数据库返回在SQLSERVER中的值、对象或设置的特殊信息。
  7. 文本和图像函数:对文本和图像数据执行操作。

1、聚合函数

它对其应用的每个行集返回一个值。

  • AVG(表达式) 返回表达式中所有的平均值。仅用于数字列并自动忽略NULL值。

  • COUNT(表达式) 返回表达式中非NULL值的数量。可用于数字和字符列。

  • COUNT(*) 返回表中的行数(包括有NULL值的列)。

  • MAX(表达式) 返回表达式中的最大值,忽略NULL值。可用于数字、字符和日期时间列。

  • MIN(表达式) 返回表达式中的最小值,忽略NULL值。可用于数字、字符和日期时间列。

  • SUM(表达式) 返回表达式中所有的总和,忽略NULL值。仅用于数字列。

2、转换函数

有CONVERT和CAST两种。

  • CONVERT(data_type[(length)], expression [, style])
    例: Select convert(varchar(10) ,stuno) as stuno,stuname from student

  • CAST( expression AS data_type )
    例: Select cast(stuno as varchar(10)) as stuno,stuname from student

Cast和Convert的区别

Cast 和Convert都是用来将一种数据类型的表达式转换为另一种数据类型的表达式。CAST 和 CONVERT 提供相似的功能,只是语法不同。在时间转化中一般用到convert,因为它比cast多加了一个style,可以转化成不同时间的格式。

3、日期函数

由于不能直接执行算术函数,所以日期函数就十分有用。

  • GETDATE() 当前的系统日期。
select GETDATE()  --结果:2019-05-07 18:34:27.343
  • DATEADD(日期部分,number,date) 返回带有指定数字(number)的日期(date),该数字添加到指定的日期部分(datepart)
select DATEADD(dd, 5, getdate())  --增加5天时间
  • DATEDIFF(日期部分,date1,date2) 返回两个日期中指定的日期部分之间的差值
select DATEDIFF(mm, '2010-1-1', '2010-3-1 00:00:00')  --结果:2
  • DATENAME(日期部分,date) 返回日期中日期部分的字符串形式
select DATENAME(dw,GETDATE()) --结果:星期二

:DATENAME 和 DATEPART 的区别,返回的值类型不同,一个是VARCHAR一个是INT,另外就是星期会用本地语言来表示

  • DATEPART(日期部分,date) 返回日期中指定的日期部分的整数形式
select DATEPART(dw,GETDATE()) --结果(返回今天是一周中的第几天):3
  • YEAR(date) 返回指定日期的年份数值
select YEAR(GETDATE())  --结果:2019
  • MONTH(date)返回指定日期的月份数值

  • DAY(date)返回指定日期的天数

注:当显示日期列的内容时如果只显示年月日部分,可以使用CONVERT转换函数对日期列进行转换

CONVERT(VARCHAR(10),日期字段名,120) --120 为日期格式YYYY-MM-DD

SELECT CONVERT(VARCHAR(10),盘点日期,120) AS 盘点日期 FROM 原材料盘点日期明细表


SQL中日期的表示方法及有效范围,如下:

日期部分缩写日期部分缩写
yy1753-9999wk1-53
季度qq1-4小时hh0-23
mm1-12分钟mi0-59
一年中的天dy1-366ss0-59
一月中的天dd1-31毫秒ms0-999
一周中的天dw1-7

4、数字函数

对数字值执行代数运算。

  • ABS(num_expr) 返回数值表达式的绝对值。

  • ACOS(float_expr) 返回角(以弧度表示),它的余弦值近似于指定的浮点表达式。

  • ASIN(float_expr) 返回角(以弧度表示),它的正弦值近似于指定的浮点表达式。

  • ATAN(float_expr) 返回角(以弧度表示),它的正切值近似于指定的浮点表达式。

  • ATN2(float_expr1, float_expr2) 返回角(以弧度表示),它的正切值在两个近似的浮点表达式之间。

  • CEILING(num_expr) 返回大于或等于数值表达式的最小整数。

  • COS(float_expr) 返回以浮点表达式表示的近似于指定角度(以弧度表示)的余弦三角函数的值。

  • COT(float_expr) 返回以浮点表达式表示的近似于指定角度(以弧度表示)的余切三角函数的值。

  • DEGREES(num_expr)返回数值表达式表示的弧度值对应的度值。

  • EXP(float_expr) 根据指定的近似浮点表达式,返回指数值。

  • FLOOR(num_expr) 返回小于或等于数值表达式的最大整数

  • LOG(float_expr) 根据指定的近似浮点表达式,返回自然对数值。

  • LOG10(float_expr) 根据指定的近似浮点表达式,返回以为底的对数。

  • PI() 返回常量值.141592653589793

  • POWER(num_expr,y) 返回幂为y的数值表达式的值。

  • RADIANS(num_expr) 返回数值表达式表示的度值对应的弧度值。

  • RAND([seed]) 随机返回的到之间的近似浮点值,可以对seed指定为整数表达式(可选)。

  • ROUND(num_expr,length) 对数值表达式截取指定的整数长度,返回四舍五入后的值。

  • SIGN(num_expr) 对正数执行+1操作,对负数和零执行-1操作。

  • SIN(float_expr) 返回以浮点表达式表示的近似于指定角度(以弧度表示)的正弦三角函数的值。

  • SQUARE(float_expr) 返回浮点表达式的平均值。

  • SQRT(float_expr) 返回指定的近似浮点表达式的平方根。

  • TAN(float_expr) 返回以浮点表达式表示的近似于指定角度(以弧度表示)的正切三角函数的值。

5、字符串函数

可用于binary 和varbinary数据类型列,但主要用于char和varchar数据类型。

  • Expr1+expr2 返回两个表达式的组合形式的字符串。

  • ASCII(char_expr) 返回表达式最左边字符的ASCⅡ代码值。

  • CHAR(int_expr) 返回到之间的整数表达式的ASCⅡ字符值。如果输入的值不在有效范围内,则返回NULL。

  • CHARINDEX('pattern',char_expr) 返回字符表达式中指定模式的起始位置。

  • DIFFERENCE(char_expr1,char_expr2) 根据比较两个字符表达式的相似度,返回到之间的值。表示匹配度最佳。

  • LEN(char_expr) 返回字符表达式的长度。

  • LOWER(char_expr) 将字符表达式全部转换为小写。

  • LTRIM(char_expr) 返回删除掉前面空格的字符表达式。

  • PATINDEX('%pattern%',expr) 返回表达式中模式第一次出现的起始位置。返回表示不存在模式形式。

  • REPLICATE(char_expr,int_expr) 返回重复指定次数的字符表达式产生的字符串。

  • REVERSE(char_expr) 反转字符表达式。

  • RIGHT(char_expr,int_expr) 返回从字符表达式最右端起根据指定的字符个数得到的字符。

  • RTRIM(char_expr) 返回删除掉其后空格的字符表达式。

  • SOUNDEX(char_expr) 评估两个字符串的相似度后得到的位代码。

  • SPACE(int_expr) 返回包含指定空格数的字符串。

  • STR(float_expr[,length[,decimal]]) 返回浮点表达式的字符串表示法。

  • STUFF(char_expr1,start,length,char_expr2) 使用字符表达式替换字符表达式的一部分字符,从指定的位置开始替换指定的长度。

  • SUBSTRING(char_expr,start,length) 返回从字符表达式的指定位置开始,截取指定长度得到的字符集。

  • UPPER(char_expr) 将字符表达式全部转换为大写。

6、系统函数

用于返回元数据或配置设置。

  • COALESCE(expr1,expr2, xprN) 返回第一个非NULL表达式。

  • COL_LENGTH('table_name','column_name') 返回列的长度。

  • COL_NAME(table_id,column_id) 返回指定的表中的列名。

  • DATALENGTH('expr') 返回任何数据类型的实际长度。

  • DB_ID([‘database_name']) 返回数据库的标识号。

  • DB_NAME([database_id]) 返回数据库的名称。

  • GETANSINULL([‘database_name']) 返回数据库的默认空性(Nullability)。

  • HOST_ID() 返回工作站的标识号。

  • HOST_NAME() 返回工作站的名称。

  • IDENT_INCR('table_or_view') 有新的记录添加入到表中时计数加。

  • IDENT_SEED('table_or_view') 返回标识列的起始编号。

  • INDEX_COL('table_name',index_id,key_id) 返回索引的列名。

  • ISNULL(expr,value) 使用指定的值替换的NULL表达式。

  • NULLIF(expr1,expr2) Expr1与Expr2相等时,返回Null。

  • OBJECT_ID('obj_name') 返回数据库对象标识号。

  • OBJECT_NAME('object_id') 返回数据库对象名。

  • STATS_DATE(table_id,index_id) 返回上次更新指定索引的统计的日期。

  • SUSER_SID([‘login_name']) 返回用户的登录标识号。

  • SUSER_ID([‘login_name']) 返回用户的登录标识号。这个函数类似于SUSER_SID()函数,并且保留了向后的兼容性。

  • SUSER_SNAME([server_user_id]) 返回用户的登录标识号。

  • SUSER_NAME([server_user_id]) 返回用户的登录标识号。这个函数类似于SUSER_SNAME()函数,并且保留了向后的兼容性。

  • USER_ID('user_name') 返回用户的数据库标识号。

  • USER_NAME(['user_id']) 返回用户的数据库名称。

7、文本和图像函数

通常返回有关文本和图像数据所需的信息。文本和图像数据是以二进制格式的形式进行存储的。

  • TEXTPTR(col_name) 返回varbinary格式的文本指针值。对文本指针进行检查以确保它指向第一个文本页。

  • TEXTVALID('table_name.col_name',text_ptr)检查给定的文本指针是否有效。返回表示有效,返回表示指针无效。

  • 131
    点赞
  • 1130
    收藏
    觉得还不错? 一键收藏
  • 7
    评论
卷序列号码为 00000030 4489:1826 C:. │ sqlserver2000.txt │ ├─第01章 │ 1.9.1 设置内存选项.sql │ 1.9.2(2) 使用文件及文件组.sql │ 1.9.2(3) 调整tempdb数据库的文件属性.sql │ ├─第02章 │ │ 2.1 日期概念理解中的一些测试.sql │ │ 2.2.4 CONVERT在日期转换中的使用示例.sql │ │ 2.3.3 SET DATEFORMAT对日期处理的影响.sql │ │ 2.3.4 SET LANGUAGE对日期处理的影响示例.sql │ │ 2.4.1 日期格式化处理.sql │ │ 2.4.2 日期推算处理.sql │ │ 2.4.3 特殊日期加减函数.sql │ │ 2.5.1 查询指定日期段内过生日的人员.sql │ │ 2.5.2 生成日期列表的函数.sql │ │ 2.5.3 工作日处理函数(标准节假日).sql │ │ 2.5.3 工作日处理函数(自定义节假日).sql │ │ 2.5.4 计算工作时间的函数.sql │ │ │ └─其他 │ 交叉表.sql │ 任意两个时间之间的星期几的次数-横.sql │ 任意两个时间之间的星期几的次数-纵.sql │ 复杂年月处理.sql │ 统计--交叉表+日期+优先.sql │ ├─第03章 │ │ 3.2 各种字符串分拆处理函数.sql │ │ 3.3 各种字符串合并处理示例.sql │ │ 3.4.1 分段截取函数.sql │ │ 3.4.2 分段更新函数.sql │ │ 3.4.3 IP地址处理函数.sql │ │ 3.5.1 字符串比较函数.sql │ │ 3.5.2 字符串并集&交集处理示例.sql │ │ 3.5.3 字符串分拆并统计的处理示例.sql │ │ 3.5.5 字符串处理示例--列车车次查询.sql │ │ 3.6.2 字符串在编号查询中的应用示例及常见问题.sql │ │ 3.6.3 动态参数的存储过程示例.sql │ │ 3.6.4 动态他Transact-SQL语句处理中的常见问题演示.sql │ │ 3.7.3 text与ntext字段的复制和合并处理示例.sql │ │ 3.7.4 text与image字段转换处理示例.sql │ │ 3.7.5 ntext字段的REPLACE处理示例.sql │ │ │ └─其他 │ varbinary转换成字符串.sql │ 关键字搜索.sql │ 分解公式.sql │ 字符串分拆--格式化.sql │ 得到一个字符串在另一个字符串中出现的次数.sql │ 数字转换成十六进制.sql │ 比较第一与第二个字符串,是否有连续的5个字符相同.sql │ 生成查询的模糊匹配字符串.sql │ 简繁转换.sql │ 统计一个表中某个字符出现最多的字母.sql │ 非法字符串处理.sql │ ├─第04章 │ │ 4.1.5 在各种处理中应用排序规则的示例.sql │ │ 4.2.1 排序规则在拼音处理中的应用.sql │ │ 4.2.2 排序规则在全角与半角处理中的应用.sql │ │ │ └─其他 │ 生成GB2312汉字表.sql │ 生成GBK汉字表.sql │ 自动获取汉字笔画.sql │ ├─第05章 │ │ 5.1.1 SET IDENTITY_INSERT 中的几个问题.sql │ │ 5.1.1 修改标识值的示例.sql │ │ 5.1.1 标识列与普通列互相转换的示例.sql │ │ 5.2.1 查表法按日期生成流水号的示例.sql │ │ 5.2.1 查表法生成流水号的示例.sql │ │ 5.2.2 使用编号表按日期生成流水号的示例.sql │ │ 5.2.2 使用编号表生成流水号的示例.sql │ │ 5.2.3 生成纯字母随机编号的示例(仅大小或者小写).sql │ │ 5.2.3 生成纯字母随机编号的示例(大小写混合).sql │ │ 5.2.3 生成纯数字随机编号的示例.sql │ │ 5.3.2 融合了补号处理的编号生成处理示例.sql │ │ 5.3.3 使用UPDATE进行编号重排的处理示例.sql │ │ 5.3.3 使用临时表进行编号重排的处理示例.sql │ │ 5.3.3 使用子查询进行编号重排的处理示例.sql │ │ 5.3.3 名次查询的处理示例.sql │ │ 5.4.1 查询已用编号分布情况的示例(临时表法).sql │ │ 5.4.1 查询已用编号分布情况的示例(子查询法).sql │ │ 5.4.2 查询缺号分布情况的示例.sql │ │ 5.4.3 返回已用编号、缺号分布字符串的处理示例.sql │ │ 5.4.4 缺勤天数统计的处理示例.sql │ │ │ └─其他 │ -补位法.sql │ 以另一个表的字段做默认值.sql │ 以另一表的字段生成编号.sql │ 关联部门流水号.sql │ 十六进制.sql │ 学号.sql │ 开票统计--涉及到连号处理.sql │ 新编号查询示例(分类查询).sql │ 新编号查询示例.sql │ 日期流水号.sql │ 材料流水号.sql │ 流水号.sql │ 箱编号连号处理.sql │ 类别自动生成编号示例.sql │ 自已做标识列的例子.sql │ 触发器自动维护已用&未用编号.sql │ 连续编号.sql │ 防止重复的示例.sql │ 项目编号=各项目独立流水号&各年不同.sql │ ├─第06章 │ │ 6.1.1 NULL对IN的查询的影响及解决示例.sql │ │ 6.1.2 各种联接的使用示例.sql │ │ 6.1.2 多表联结导致记录重复的示例.sql │ │ 6.1.3 使用UNION实现库存报表的示例.sql │ │ 6.1.5 按指定上下限区间进行数据统计的示例.sql │ │ 6.1.6 随机出题的示例.sql │ │ 6.2.1 ROLLUP实现的分级汇总示例(定义各汇总列标题).sql │ │ 6.2.1 ROLLUP实现的分级汇总示例(带排序及汇总列标题处理).sql │ │ 6.2.1 ROLLUP实现的分级汇总示例(带排序处理).sql │ │ 6.2.1 ROLLUP实现的分级汇总示例.sql │ │ 6.2.1 UNION ALL实现的分级汇总示例.sql │ │ 6.3.1 简单的交叉报表处理示例.sql │ │ 6.3.2 多列转换为行的交叉报表处理示例.sql │ │ 6.3.3 行值动态变化的交叉报表处理示例(转换多列).sql │ │ 6.3.3 行值动态变化的交叉报表处理示例.sql │ │ 6.3.4 化解字符串不能超过8000的方法.sql │ │ 6.3.5 特殊的交叉报表处理示例.sql │ │ 6.4.1 库存明细帐处理示例(包含结存数).sql │ │ 6.4.1 库存明细帐处理示例.sql │ │ 6.4.2 同期及上期数据对比处理示例.sql │ │ 6.4.3 动态分组处理示例.sql │ │ 6.4.4 排行榜处理示例.sql │ │ │ └─其他 │ 交叉表--复杂名次.sql │ 交叉表-优先级处理.sql │ 交叉表分析.sql │ 分级汇总.sql │ 分组交叉表.sql │ 列转行.sql │ 固定行列报表.sql │ 复杂交叉表.sql │ 复杂交叉表1.sql │ 多栏显示.sql │ 日期+星期+时间.sql │ 格式化报表.sql │ 横转竖-1.sql │ 横转竖-字段名.sql │ 横转竖-生成字段名.sql │ 横转竖.sql │ 行列互换的复杂交叉表.sql │ 限制列数的交叉表.sql │ ├─第07章 │ │ 7.1 splitpage.asp │ │ 7.2.1 TOP n 实现的通用分页存储过程.sql │ │ 7.2.2 字符串缓存实现的通用分页存储过程.sql │ │ 7.2.3 临时表缓存实现的通用分页存储过程.sql │ │ 7.2.4 使用系统存储过程实现的通用分页存储过程.sql │ │ 7.3.1 实现随机分页的通用分页存储过程.sql │ │ 7.3.2 根据分类表实现的分页存储过程.sql │ │ │ └─其他 │ sp_cursor.sql │ 基本方法.sql │ ├─第08章 │ │ 8.1.2 树形数据分级汇总示例.sql │ │ 8.1.3 树形数据编号重排的通用存储过程.sql │ │ 8.1.3 树形数据编号重排示例.sql │ │ 8.1.4 实现编码规则调整处理的通用存储过程.sql │ │ 8.1.4 生成编码规则调整处理T-SQL语句的函数.sql │ │ 8.1.5 删除节点处理的通用存储过程.sql │ │ 8.1.5 移动节点处理的通用存储过程.sql │ │ 8.2.2 树形数据层次显示处理示例.sql │ │ 8.2.2 树形数据广度排序处理示例.sql │ │ 8.2.2 树形数据深度排序处理示例(模拟单编号法).sql │ │ 8.2.2 树形数据深度排序处理示例(递归法).sql │ │ 8.2.3 查找指定节点的所有子节点的示例函数.sql │ │ 8.2.4 查找指定节点的所有父节点的示例函数.sql │ │ 8.2.5 校验插入指定结点是否导致编码循环的示例函数.sql │ │ 8.2.5 校验表中数据是否有循环编码的通用存储过程.sql │ │ 8.2.6 复制指定节点及其所有子节点到指定结点的处理示例(借鉴方式排序法).sql │ │ 8.2.6 复制指定节点及其所有子节点到指定结点的处理示例.sql │ │ 8.2.7 实现删除指定结点及所有子节点的处理触发器.sql │ │ 8.2.8 逐级汇总示例(循环逐级累计法).sql │ │ 8.2.8 逐级汇总示例(用户定义函数法).sql │ │ 8.3.1 产品配件清单查询示例.sql │ │ 8.3.2 最短乘车路线查询示例.sql │ │ │ └─其他 │ xml菜单.sql │ 宝塔形数据的处理-1.sql │ 宝塔形数据的处理.sql │ 树形数据生成xml.sql │ ├─第09章 │ │ 9.1.3 访问外部数据源方法总结.sql │ │ 9.5.1 二进制文件存取示例(T-SQL).sql │ │ 9.5.1 二进制文件存取示例(VB&VBA).vbs │ │ a.txt │ │ Schema.ini │ │ │ └─其他 │ bcp-数据导入导出(全).sql │ bcp-数据导入导出-二进制文件.sql │ bcp-数据导出为文件.sql │ bcp表数据存为XML.sqlSQL Server到Oracle连接服务器的实现.sqlSQL Server到SQLBASE连接服务器的实现.sqlSQL Server到SYBASE连接服务器的实现.sqlsql导出mysql.sql │ textcopy实现文件存取.sql │ Vb程序实现文件存取.sql │ 导入文本文件时如何指定字段类型.sql │ 导出northwind中Employees的图像.sql │ 将某个目录上的Excel表,导入到数据库中.sql │ 数据导入导出基本方法.sql │ 用ASP上传&下载文件.sql

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值