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你必须知道的-函数及类型转换的更多相关文章

  1. SQL Server系统函数:类型转换函数

    原文:SQL Server系统函数:类型转换函数 1.基本的转化 SELECT CAST(2008 as varchar(4)) + ' year!' SELECT CONVERT(varchar(4 ...

  2. SQL Fundamentals || Single-Row Functions || 转换函数 Conversion function

    SQL Fundamentals || Oracle SQL语言   SQL Fundamentals: Using Single-Row Functions to Customize Output使 ...

  3. SQL分组查询及聚集函数的使用

    今天要做一个查询统计功能,一开始有点犯难,上午尝试大半天才写出统计sql语句,才发现自己sql分组查询及聚集函数没学好:其实就是group by子句和几个聚集函数,熟练使用统计功能很简单.在此总结下今 ...

  4. SQL几种常用的函数

    函数的种类: 算数函数(数值计算的函数) 字符串函数(字符串操作的函数) 日期函数(用来进行日期操作的函数) 转换函数(用来转换数据类型和值的函数) 聚合函数(用来进行数据聚合的函数) 算数函数(+- ...

  5. SQL Server 进制转换函数

    一.背景 前段时间群里的朋友问了一个问题:“在查询时增加一个递增序列,如:0x00000001,即每一个都是36进位(0—9,A--Z),0x0000000Z后面将是0x00000010,生成一个像下 ...

  6. SQL中Round(),Floor(),Ceiling()函数的浅析

    项目中的一个功能模块上用到了标量值函数,函数中又有ceiling()函数的用法,自己找了一些资料,对SQL中这几个函数做一个简单的记录,方便自己学习.有不足之处欢迎拍砖补充 1.round()函数遵循 ...

  7. SQL转换全角/半角函数

    /****** SQL转换全角/半角函数 开始******/ CREATE FUNCTION ConvertWordAngle ( ), --要转换的字符串 @flag bit --转换标志,0转换成 ...

  8. Sql总结之Sql--常用函数

    控制流函数 IFNULL(expr1,expr2) 如果expr1不是NULL,IFNULL()返回expr1,否则它返回expr2.IFNULL()返回一个数字或字符串值,取决于它被使用的上下文环境 ...

  9. SQL ServerOVER 子句,over开窗函数,SQL SERVER 开窗函数

    https://technet.microsoft.com/zh-cn/library/ms189461(v=sql.105).aspx http://www.cnblogs.com/85538649 ...

随机推荐

  1. 【Linux高频命令专题(12)】touch.md

    概述 一般在使用make的时候可能会用到,用来修改文件时间,或者新建一个不存在的文件. 命令格式 touch [选项]... 文件... 命令参数 -a 或--time=atime或--time=ac ...

  2. 给360的六条建议(禁止异地登录,普通用户500G足够用了)

    个人觉得,360云盘哪怕做个小改进,都不至于走到现在的地步,最后六条建议! 1.弄个实名制,身份证和手机号码双重绑定,每人限制申请一个账户. 2.禁止云盘的一切分享功能,采用封闭式,个人云盘资料其他人 ...

  3. QSS的作用需要正确设置文件编码才能起作用

    QT这个库,无非使用OO对跨平台做了绝佳的封装,这其中的主要工作也就是比较繁琐而已,但并不多么了不起.唯独其中提供的QSS功能,让我感到十分神奇,做出来的效果实在很惊艳,而使用代码却又是如此简单,而且 ...

  4. .NET中操作SQLite

    C#操作SQLite Database C#下SQLite操作驱动dll下载:System.Data.SQLite C#使用SQLite步骤: (1)新建一个project (2)添加SQLite操作 ...

  5. 【原创】Leetcode -- Reverse Linked List II -- 代码随笔(备忘)

    题目:Reverse Linked List II 题意:Reverse a linked list from position m to n. Do it in-place and in one-p ...

  6. tcpdump抓SQL

    前言:假设如果有个服务器几十个链接突然达到上千个链接,show processlist,general_log,还有慢查询日志这些都不能用,你怎么把这些链接过来的SQL情况了解清楚,如果你觉得那些好用 ...

  7. YCM安装与配置

    1.重新编译vim 2.通过vundle安装YCM 3.安装CMake 4.下载预先编译好的llvm+clang 5.看官网的命令,生成CMake的编译文件并编译 配置YCM: 要额外配置ycm_ex ...

  8. Android开发之火星坐标转换工具

    代码: import java.io.InputStream; import java.io.ObjectInputStream; /* * 把获取到的真实地址转换为火星坐标 */ public cl ...

  9. bzoj2791

    每个顶点有且仅有一条出边是什么意思呢 类似一棵树,树上的边都是由儿子指向父亲的,并且这个东西带着一个环 也就是一个个有向环套有向树…… 这题还是比较简单的,把环作为根然后类似lca做即可,注意细节的p ...

  10. 设置mysql的interactive_timeout和wait_timeout的值

    1,为什么要重新设置这两个变量的值? 因为如果数据库默认这两个变量的值是8小时(即28800秒)如果在8小时之内没有连接到数据库,等下次再连的时候就会抛连接超时,或连接关闭这样的异 常,但是多连接几次 ...