SQL-数学、字符串、时间日期函数和类型转换

--数学函数
--ABS绝对值,
select ABS(-99)
--ceiling取上限,
select CEILING(4.5)
--floor去下限
select FLOOR(4.5)
--power 几次方,
select POWER(2,2)
--round四舍五入,
select round (6.45,1)
--sqrt开平方
select SQRT(9)
--square平方
select SQUARE(5)

--字符串函数
--ASCII 返回字符串最左边的字符ascii码
select ASCII('name')
select ASCII(name)from student1--查看所有人名的首字符的ascii码
--char 将ascii码转换成字符
select CHAR(70)
select CHAR(chinese)from student1--讲所有语文分数转换成字符
--注意,(整数)所转换的表达式或者常量需要在0-256之间,超出的话输出n

--LEN 返回字符串的长度
select LEN('asdfghh')
select LEN(name)from student1 --显示所有姓名的长度

--charindex 返回字符串首个字符出现在某个字符串从头开始为几的索引
select CHARINDEX('d','asdfghhjkkhg')--索引从1开始
select CHARINDEX('23',age)from kaoshi --查看在23里面出现的索引

--difference 返回相似度 用0——4表示相似度
select DIFFERENCE('asddfghjk','adfjkgh')
--LEFT 表示从左边截取字符串
select LEFT('asfgdsssdgh',4)

--RIGHT 从右边
select right('asfgdsssdgh',4)

--lower 全部转化成小写
select LOWER('adasJFKSKdffsfa')

--upper 大写
select UPPER('AFADSFAsfsdfsSAD')

--Ltrim 去掉左边的空格
select LTRIM(' asd ')
--Rtrim 去掉右边的空格
select RTRIM(' asd ')

--patindex 相当于charindex 返回字符串所在字符中的首字符索引位
select PATINDEX('%dasda%','154dasda546')

--Replace 查找替换
select REPLACE(sex ,'女','姑娘')from student1--只显示,不更改
--replicat 复制粘贴
select REPLICATE('asd ',3)--一共三遍
--reverse 翻转
select REVERSE('asdfgghjk')

--space 空格
select 'a'+SPACE(5)+'bc'

--str 强制转换成字符串
select STR(123456.222,5,1)--参数1是需要转换的数值,参数2是转换之后保留的长度
--参数3是小数点后需要保留的位数
--注意,参数2在小于参数1整数部分位数时无法转换

--stuff
--从第几个索引的位置,看看需不需要向后删除几位,然后将需要插入的内容插入
--参数1是需要被插入的字符串
--参数2是从第几个索引开始
--参数3是是否需要向后删除几个字符
--参数4是新插入的字符
select STUFF('123456',5,2,'.454')

--substring
--截取字符串
--参数1是被截取的字符串
--参数2是从哪个索引开始
--参数3是截取的长度
select SUBSTRING('151111111111111111111111888861',1,4)

--1.时间日期函数:
set datefirst 1 --设置星期一为第一天
--datepart 函数,返回时间日期中的某一个部分
--参数1是指返回那一个部分
--参数2是指从那个时间日期中返回
--datefirst 是系统常量,使用时需要加上@@
select @@DATEFIRST as'1st day',DATEPART(dw,GETDATE())as 'tobay'
select GETDATE()--执行是后系统时间
--需要改变的类型,需要改变的数量,需要执行要改变的时间日期

select DATEADD(HH,5,'2015-12-12')
--datediff 算时间差, different 不同的,相差的
--需要改变的类型,开始的时间日期,结束的时间日期
select datediff(MM,'2013-12-31','2014-1-3')
declare @startday varchar(50)--声明变量时需要添加数据类型,
set @startday ='1993-11-1'--设置变量值
select DATEDIFF(DAY,@startday,GETDATE())--as '在线时间'
select day('1993-11-1')
select MONTH('1993-11-1')
select YEAR('1993-11-1')
--datepart 返回时间日期的某一个部分
--参数1是返回的哪一个部分
--参数2是以哪个日期作为被计算的日期
select DATEPART(YEAR,'2009-9-8')--返回年
select DATEPART(DY,'2009-9-8')--返回dayofyear 这一年的第几天
select DATEPART(QQ,'2009-9-8')--返回季度 共四个季度
--判断日期时间是否正确
select ISDATE('2012-2-29')--正确 返回1
select ISDATE('2011-2-29')--错误 返回0
--2.类型转换:

--数据类型转换 cast convert
--cast 先写被转换的value + as + 被转换成的类型
select CAST(1.999 as int)
select CAST(1.56656 as varchar(50))
select CAST(1.3996646 as decimal(18,2))
select cast(CAST('1.5656' as decimal(18,2)) as int)
select CAST('1.5656' as decimal(18,2))
--convert 参数1是需要转换成为的类型,参数2是需要被转换的value
select CONVERT(int , '99')
select CONVERT(decimal(18,2) , '89.9912')--在精确后面位数的时候会自动四舍五入
select CONVERT(varchar(50) , 3.1415926)

上一篇:hdu 5718 Oracle 高精度


下一篇:Flask+Nginx+uWSGI在Ubuntu服务器上的配置