SQL你必须知道的-函数及类型转换
use MySchoolTwo
--ISNULL(expression,value) :如果 expression不为空则返回 expression ,否则返回 value。
select studentId , isnull( english ,0 ) from score
如果 english 值为null 返回
-- 字符串函数
--LEN() :计算字符串长度
select LEN ( ''123456'')
select LEN ( sName), sName from Student
--LOWER() 、UPPER () :转小写、大写
select LOWER ( ''AcbDFgCD'')
select upper ( ''AcbDFgCD'')
--LTRIM() :字符串左侧的空格去掉
--RTRIM () :字符串右侧的空格去掉
--LTRIM(RTRIM('' bb ''))
select len ( ltrim( '' abcd '' )+ ''123'')
select len ( rtrim( '' abcd '' )+ ''123'')
select len ( rtrim( ltrim ('' abcd '' ))+ ''123'')
--LEFT() 、RIGHT() 截取取字符串
select LEFT( '' 张三'' , 1)
-- 结果+1 = 612346 自动实现类型的转换
select right( ''ipv612345'' ,LEN ( ''ipv612345'')- 3 ) + 1
--SUBSTRING(string,start_position,length) 从第一位置截取个字符串 ip
-- 参数string 为主字符串, start_position 为子字符串在主字符串中的起始位置, length 为子字符串的最大长度。
select SUBSTRING ( ''ipv612345'', 1 ,2 )
-- 查询班内所有学生的姓去除重复
select distinct ( substring( sName ,1 , 1)) from Student
-- 日期函数
--GETDATE() :取得当前日期时间
select GETDATE ()
--DATEADD (datepart , number, date ) ,计算增加以后的日期。
-- 参数date 为待计算的日期;参数 number 为增量;参数 datepart为计量单位,可选值如下 :
-- 取值 别名 说明
--year yy,yyyy 年份
--quarter qq,q 季度
--month mm,m 月份
--dayofyear dy,y 当年度的第几天
--day dd,d 日
--week wk,ww 当年度的第几周
--weekday dw,w 星期几
--hour hh 小时
--minute mi,n 分
--second ss,s 秒
--millisecond ms 毫秒
--DATEADD(DAY, 3,date) 为计算日期 date 的天后的日期,
-- 而DATEADD(MONTH ,-8,date) 为计算日期 date 的个月之前的日期
select DATEADD ( MONTH, 1 ,GETDATE ())
select DATEADD ( year,- 1 ,GETDATE ())
select DATEADD ( day, 1 ,GETDATE ())
--quarter 季度 week 一周
select DATEADD ( quarter, 1 ,GETDATE ())
select DATEADD ( week, 1 ,GETDATE ())
--datediff 两个月之间的时间差 一般会用它来计算当前月销售额啊今年的销售额啊之类的
--DATEDIFF ( datepart , startdate , enddate ) :计算两个日期之间的差额。
--datepart 为计量单位,可取值上 DateAdd。
select DATEDIFF ( MONTH, GETDATE (),''2012-12-21'' )
select DATEDIFF ( day, GETDATE (),''2012-12-21'' )
-- 求当前月的销售记录
-- 意思就是计算 xsjl表中的日期与当前月日期时间差为零的
select * from xsjl where DATEDIFF( MONTH ,date , GETDATE())= 0
-- 统计不同生日年份的学生个数
--year(sBirthday) 获取年份
select COUNT (*), year( sBirthday ) from Student
group by year( sBirthday )
select year ( getdate()) --2011
select month ( getdate())
select day ( getdate())
-- 求每个年龄有多少学生
select COUNT (*), datediff( year ,sBirthday , getdate()) from Student
group by datediff( year ,sBirthday , getdate())
select * from Student
--datename datepart 返回一个日期的特定部分
select DATENAME ( year, getdate ())--2011 但是是字符串类型
select DATEpart ( year, getdate ())--2011 但是是整数
-- 当前日是今年的第几天
select DATENAME ( DAYOFYEAR, GETDATE ())
-- 当前日是今年第几周 48周
select DATENAME ( week, GETDATE ())
-- 返回‘星期四’
select DATENAME ( WEEKDAY, GETDATE ())
-- 返回‘’ 从星期天开始计算的
select datepart ( WEEKDAY, GETDATE ())
-- 类型转换
-- 问题
select '' 平均分数 ''+ 123 --无法将 nvarchar 类型转换成为 int
select AVG ( english) from Score -- 平均分数只需要保留两位有效数字
select * from Student --sBirthday 只需精确到日
--CAST ( expression AS data_type)
select '' 平均分数 ''+ CAST (123.56 as nvarchar ( 10))
-- 这里默认发生了隐式转换
select right( sNo ,3 )+ 1 from Student
-- 结果同上
select CAST (RIGHT( sNo, 3 ) as int )+ 1 from Student
-- 结果为cast 是不四舍五入的
select CAST ( 123.556 as int)
-- 如果一定要四舍五入需要使用到 round
select ROUND ( 1234.45789, 0 )-- 返回
select ROUND ( 1234.65789, 0 )-- 返回
-- 需要结合cast 使用去除
select CAST ( ROUND( 1234.789 ,0 ) as int )-- 返回
--cast 结合decimal 使用保留两位小数
select CAST ( 1234.789 as decimal( 10 ,2 )) --返回
--decimal 后的参数查看帮助文档
select CAST ( AVG( english )as decimal( 10 ,2 )) from Score
--CONVERT ( data_type, expression)
select CONVERT ( int, 1234.56789 )-- 返回不四舍五入
select CONVERT ( int, ROUND (1234.5678 , 0)) -- 返回
select CONVERT ( decimal( 10 ,2 ), 1234.5678) -- 返回
-- 补充使用CONVERT 读取年月日
-- 日期只取年月日
select GETDATE ()
select CONVERT ( nvarchar( 10 ),GETDATE ()) --返回 24 2011
-- 需要使用第三个参数指定返回日期格式
select CONVERT ( nvarchar( 20 ),GETDATE (), 20) -- 返回14:16:55
select CONVERT ( nvarchar( 20 ),GETDATE (), 23) -- 返回
-- 修改截取nvarchar 的长度
select CONVERT ( nvarchar( 10 ),GETDATE (), 20) -- 返回
-- 只取小时分钟秒
select CONVERT ( nvarchar( 20 ),GETDATE (), 108) -- 返回:20:02
-- 解决以上Student 中 sBirthday格式
select sId , sName , sAge , sNo , convert( nvarchar (10 ), sBirthday, 23 )as ''出生日期 '' ,
sClassId , sSex , sPhone from Student
SQL你必须知道的-函数及类型转换的更多相关文章
- SQL Server系统函数:类型转换函数
原文:SQL Server系统函数:类型转换函数 1.基本的转化 SELECT CAST(2008 as varchar(4)) + ' year!' SELECT CONVERT(varchar(4 ...
- SQL Fundamentals || Single-Row Functions || 转换函数 Conversion function
SQL Fundamentals || Oracle SQL语言 SQL Fundamentals: Using Single-Row Functions to Customize Output使 ...
- SQL分组查询及聚集函数的使用
今天要做一个查询统计功能,一开始有点犯难,上午尝试大半天才写出统计sql语句,才发现自己sql分组查询及聚集函数没学好:其实就是group by子句和几个聚集函数,熟练使用统计功能很简单.在此总结下今 ...
- SQL几种常用的函数
函数的种类: 算数函数(数值计算的函数) 字符串函数(字符串操作的函数) 日期函数(用来进行日期操作的函数) 转换函数(用来转换数据类型和值的函数) 聚合函数(用来进行数据聚合的函数) 算数函数(+- ...
- SQL Server 进制转换函数
一.背景 前段时间群里的朋友问了一个问题:“在查询时增加一个递增序列,如:0x00000001,即每一个都是36进位(0—9,A--Z),0x0000000Z后面将是0x00000010,生成一个像下 ...
- SQL中Round(),Floor(),Ceiling()函数的浅析
项目中的一个功能模块上用到了标量值函数,函数中又有ceiling()函数的用法,自己找了一些资料,对SQL中这几个函数做一个简单的记录,方便自己学习.有不足之处欢迎拍砖补充 1.round()函数遵循 ...
- SQL转换全角/半角函数
/****** SQL转换全角/半角函数 开始******/ CREATE FUNCTION ConvertWordAngle ( ), --要转换的字符串 @flag bit --转换标志,0转换成 ...
- Sql总结之Sql--常用函数
控制流函数 IFNULL(expr1,expr2) 如果expr1不是NULL,IFNULL()返回expr1,否则它返回expr2.IFNULL()返回一个数字或字符串值,取决于它被使用的上下文环境 ...
- SQL ServerOVER 子句,over开窗函数,SQL SERVER 开窗函数
https://technet.microsoft.com/zh-cn/library/ms189461(v=sql.105).aspx http://www.cnblogs.com/85538649 ...
随机推荐
- 不要将缓存服务器与Tomcat放在单台机器上,否则出现竞争内存问题
缓存分为本地缓存和远程分布式缓存,本地缓存访问速度更快但缓存数据量有限,同时存在与应用程序争用内存的情况. 1.不要将缓存服务器与Tomcat放在单台机器上,否则出现竞争内存问题 2.不要将缓存服务器 ...
- QEvent大全,有中文解释
简述 QEvent 类是所有事件类的基类,事件对象包含事件参数. Qt 的主事件循环(QCoreApplication::exec())从事件队列中获取本地窗口系统事件,将它们转化为 QEvents, ...
- java:访问权限
访问权限四大类:权限从大->小 1.public: 公共权限 2.protected: 受保护权限 3.default: 包级别访问权限/默认权限 4.private: 私有权限 以p ...
- ADO.NET入门教程(三) 连接字符串,你小觑了吗?
出处:http://www.cnblogs.com/liuhaorain/archive/2012/02/12/2347914.html 摘要 ADO.NET强大的优势在于对不同的数据源提供一致的访问 ...
- Spring整合CXF,发布RSETful 风格WebService(转)
Spring整合CXF,发布RSETful 风格WebService 这篇文章是承接之前CXF整合Spring的这个项目示例的延伸,所以有很大一部分都是一样的.关于发布CXF WebServer和Sp ...
- centos杀死进程命令
比如 先查看 httpd 进程 ps aux |grep httpd [root@moyea309 init.d]# ps aux |grep httpdroot 2091 0.0 0. ...
- C++:用成员初始化列表对数据成员初始化
1.在声明类时,对数据成员的初始化工作一般在构造函数中用赋值语句进行. 例如: class Complex{ private: double real; double imag; public: Co ...
- Spring配置概述
1.Spring容器 1)要使应用程序中的Spring容器成功启动,需要以下三方面的条件都具备: · Spring架构的类包都已经放在应用程序的类路径下: · 应用程序为Spring提供完备的Bean ...
- 如何写科技文章的讨论discussion部分
众所周知,讨论部分是在结合自己的研究结果基础上,对整个文章的结论的提炼和升华.这一部分是整个论文的精,往往点睛作用. 同时,很多杂志要求结果和讨论分开,这也就更突出了写好讨论的重要性. 那么,我们应该 ...
- onlineDDL测试
onlineDDL语法: alter table ALTER [COLUMN] col_name {SET DEFAULT literal | DROP DEFAULT} ADD [COLUMN] c ...