加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > MsSql教程 > 正文

sqlserver函数

发布时间:2020-12-12 13:25:36 所属栏目:MsSql教程 来源:网络整理
导读:--*********************************************************************************************--*********************************sqlserver函数大全*******************************************--***********************************************
--*********************************************************************************************
--*********************************sqlserver函数大全*******************************************
--*********************************************************************************************

--ascii(字符串表达式)
--返回最左侧的ASCII码值
select ASCII('AB') as ascii   --返回65

--char(整数表达式)
--ASCII 码转换为字符
select CHAR(65) as char   --返回A

--charindex(字符串表达式 1,字符串表达式2[,整数表达式])
--查找字符串匹配位置号
select CHARINDEX('a','gdsahhfah')   --返回4
select CHARINDEX('a','gdsahhfah',5) --返回8

--difference(字符串表达式 1,字符串表达式 2)
--返回一个0 到 4 的整数值,指示两个字符表达式的之间的相似程度
--0 表示几乎不同或完全不同,
--4 表示几乎相同或完全相同。
select DIFFERENCE('aa','bb')
select DIFFERENCE('eceeaag','ab')

--left(字符串表达式,整数表达式)
--返回字符串中从左边开始指定个数的字符
select LEFT('sbcaaabc',4)    --返回sbca

--right(字符串表达式,整数表达式)
--返回字符串中从右边开始指定个数的字符
select RIGHT('gdacdf',3)    --返回cdf

--len(字符串表达式)
--返回指定字符串表达式的字符数,其中不包含尾随空格
select LEN(' a bcdef  ')    --返回8

--lower(字符串表达式)
--返回大写字符数据转换为小写的字符表达式
select LOWER('AAAA')    --返回aaaa

--upper(字符串表达式)
--返回小写字符数据转换为大写的字符表达式
select UPPER('aaaa')    --返回AAAA

--ltrim(字符串表达式)
--返回删除了前导空格之后的字符表达式
select LTRIM('   abc')  --返回abc

--rtrim(字符串表达式)
--返回删除了尾随空格之后的字符表达式
select RTRIM('abc   ')  --返回abc

--reverse(字符串表达式)
--返回指定字符串反转后的新字符串
select REVERSE('12345') --返回54321

--space(整数表达式)
--返回由指定数目的空格组成的字符串
select '123'+SPACE('2')+'b'

--str(float 型小数[,总长度[,小数点后保留的位数]])
--返回由数字转换成的字符串。返回字符数不到总长度的前面补空格,超过总长度的截断小数位。如果需要截断整数位则返回**
--注意在截断时遵循四舍五入总长度。它包括小数点、符号、数字以及空格。默认值为10
--小数点后最多保留16 位。默认不保留小数点后面的数字
select STR('123.567',10,3)   --返回'   123.567'

--stuff(字符串表达式 1,开始位置,长度,字符串表达式 2)
--在指定的开始位置删除指定长度的字符,并在指定的开始位置处插入字符串表达式
select STUFF('abcdef',3,2,'ABC')  --返回abABCef

--substring(字符串表达式,开始位置,长度)
--返回截取的字符串
select SUBSTRING('abcdef',4)  --返回bcde

--replace(字符串表达式 1,字符串表达式 2,字符串表达式 3)
--返回替换字符串
select REPLACE('abcdefbc','bc','BC')  --返回aBCdefBC

--dateadd(日期部分,数字,日期)
--返回给指定日期加上一个时间间隔后的新的日期值
select DATEADD(YEAR,'2000-9-9')   --返回2010-09-09 00:00:00

--datediff(日期部分,开始日期,结束日期)
--返回两个指定日期的指定日期部分的差的整数值,在计算时由结束日期减去开始日期
select DATEDIFF(YEAR,'2000-9-9','2010-9-9')  --返回10

--datename(日期部分,日期)
--返回表示指定日期的指定日期部分的字符串
--dw 表示一星期中星期几,wk 表示一年中的第几个星期,dy 表示一年中的第几天
select datename(mm,'2007-12-11')   --返回 12
select DATENAME(dw,'2016-9-6')   --返回星期二
select DATENAME(WK,'2016-9-6')   --返回37
select DATENAME(DY,'2016-9-6')	 --返回250

--datepart(日期部分,日期)
--返回表示指定日期的指定日期部分的整数
select DATEPART(YEAR,'2016-9-6')  --返回2016

--getdate()
--返回当前系统日期和时间
select GETDATE()   --返回2016-09-06 11:30:52

--返回表示当前的UTC(世界标准时间)时间。即格林尼治时间
select getutcdate()

--rand([整数表达式])
--随机数
select RAND()

--round(数值表达式[,长度[,操作方式]])
--返回一个数值,舍入到指定的长度。注意返回的数值和原数值
select ROUND(1235.4674,1)  --返回1235.5000

--convert(数据类型[(长度)],表达式[,样式])
--返回年龄:23(注意:如果想要在结果中正确显示中文需要在给定的字符串前面加上 N,加 N 是为了使数据库识别Unicode 字符)
select N'年龄:'+convert(nvarchar,23) 
select convert(nvarchar,getdate())  --返回'09  6 2016 11:40AM'

--cast(表达式 as 数据类型[(长度)])
--将一种数据类型的表达式显式转换为另一种数据类型的表达式
select cast(123 as nvarchar)       --返回 123

--newid()
--返回一个GUID(全局唯一表示符)值
select NEWID() as GUID

--isnumeric(任意表达式)
--判断表达式是否为数值类型或者是否可以转换成数值。是返回1,不是返回 0
select ISNUMERIC('g')    --返回0
select ISNUMERIC('113')  --返回1

--isnull(任意表达式 1,任意表达式 2)
--1 不为 NULL,则返回它的值;否则,在将任意表达式2 的类型转换为任意表达式1的类型(如果这两个类型不同)后,返回任意表式2 的值。
select ISNULL(null,'234g')     --返回234g
select ISNULL('gsgd','33333')  --返回gsgd

--isdate(任意表达式)
--确定输入表达式是否为有效日期或可转成有效的日期。是返回1,不是返回 0
select ISDATE('gggs')		--返回0
select ISDATE('2019-5-8')   --返回1


--排名函数的常用使用格式:函数名() over (order by 列名 [asc|desc][,列名……])
--**********************************************************************************************************************
--row_number无参数,需与over一起用
--为结果集内每一行进行编号,从1开始后面行依次加 1
select empId,empName,Salary,row_number() over(order by Salary desc) as rank from Tab_Salary   --返回1,4的排名

--rank无参数
--如果两个或多个行与一个排名关联,则每个关联行将得到相同的排名,排名不连续。例如,如果有价格最高的两种产品的价格相同,它们将列第一。
--由于已有两行排名在前,所以具有下一个最高价格的产品将排名第三。该排名等于该行之前的所有行数加一。因此,RANK 函数并不总返回连续整数。
select empId,rank() over(order by Salary desc) as rank from Tab_Salary     --返回1,1,4的排名

--dense_rank无参数
--如果两个或多个行与一个排名关联,则每个关联行将得到相同的排名,排名连续。
--例如,如果有价格最高的两种产品的价格相同,它们将并列第一,下一个最高价格的产品将排名第二。
--因此,DENSE_RANK 函数返回的数字没有间断,并且始终具有连续的排名
select empId,dense_rank() over(order by Salary desc) as rank from Tab_Salary   --返回1,3
--**********************************************************************************************************************


--聚合函数对一组值执行计算,并返回单个值。除了 COUNT 以外,聚合函数都会忽略空值。聚合函数经常与 SELECT 语句的 GROUP BY 子句一起使用。
--聚合函数的常用使用格式:函数名([all|distinct] 表达式)
--all:默认值,对所有的值进行聚合函数运算包含重复值。
--distinct: 消除重复值后进行聚合函数运算
--**********************************************************************************************************************
--avg(n)
--返回组中各值的平均值。空值将被忽略。 表达式为数值表达式
select AVG(Salary) from Tab_Salary

--count(n)
--返回组中的项数。COUNT(*) 返回组中的项数。包括 NULL 值和重复项。如果指定表达式则忽略空值。表达式为任意表达式
select COUNT(*) from Tab_Salary
select COUNT(distinct Salary) from Tab_Salary  --消除重复后的个数

--min(n)
--返回组中的最小值。空值将被忽略。表达式为数值表达式,字符串表达式,日期
select min(Salary) from Tab_Salary

--max(n)
--返回组中的最大值。空值将被忽略。表达式为数值表达式,字符串表达式,日期
select max(Salary) from Tab_Salary

--sum
--返回组中所有值的和。空值将被忽略。表达式为数值表达式
select sum(Salary) from Tab_Salary


参考博客:http://www.voidcn.com/article/p-nvxemrim-xp.html

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读