初级进阶版SQL语句总结(1)

来源:互联网 发布:我的世界手机版js插件 编辑:程序博客网 时间:2024/06/05 00:10

我不是专业的DBA,这里记录的都是一些常用的SQL技能点,为的是熟练掌握这些来提高我们的工作效率,如果想系统学习SQL的话,那恐怕要让您失望了。

1、case项作为排序条件

case常常被用来对字段内容进行转换,除此之外还能用作排序条件,这种用法我之前用的不多,记录下来希望对大家有帮助。

select * from Sys_Module where ModuleCode=2589 or ParentCode=2589order by case ModuleCode when 2595 then 1 else 0 end desc,ModuleCode desc

这里写图片描述

除了通过case单列进行排序外,还可以按照多列进行混合排序

select * from Sys_Module where ModuleCode=2589 or ParentCode=2589order by case when ParentCode=30 then 2 when ModuleCode=2595 then 1 else 0 end desc,ModuleCode desc

这里写图片描述

2、CharIndex函数

在一个表达式中搜索另一个表达式,如果找到则返回其起始位置,如果找不到则返回0。
注意:返回的起始位置从 1 开始,而不是从 0 开始。
语法:
CHARINDEX ( expressionToFind , expressionToSearch [ , start_location ] )
expressionToFind
是字符表达式,其中包含要查找的序列。 expressionToFind限制为 8000 个字符。
expressionToSearch
是要搜索的字符表达式。
start_location
是整数或bigint开始搜索的表达式。 如果start_location未指定、 为负数,或为 0,则从expressionToSearch首字母处开始搜索。

select *,CHARINDEX(',6661,',','+StoreNO+',') as CharIndex from StoreInfoselect *,CHARINDEX(',6661,',','+StoreNO+',',0) as CharIndex from StoreInfoselect *,CHARINDEX(',6661,',','+StoreNO+',',1) as CharIndex from StoreInfo

运行截图如下:
这里写图片描述

select *,CHARINDEX(',6661,',','+StoreNO+',',2) as CharIndex from StoreInfo

运行截图如下:
这里写图片描述

3、CONVERT函数

在做查询页的时候,有时会需要查询某天的内容,比如查询2017/11/21这一天的信息,我们可以使用date>2017/11/21 00:00:00 and date<=2017/11/22 00:00:00,我觉得这个有点麻烦想找个一句话就能搞定的方法,就有了下边的知识点。

select Id,UserName,CreateDate,CONVERT(nvarchar(10),CreateDate,120) from Sys_Userwhere CONVERT(nvarchar(10),CreateDate,120)='2017-11-16'

截图如下:
这里写图片描述

select Id,UserName,CreateDate,CONVERT(nvarchar(10),CreateDate,111) from Sys_Userwhere CONVERT(nvarchar(10),CreateDate,111)='2017/11/16'

截图如下:
这里写图片描述

4、DATEADD()

DATEADD() 函数可以在日期中添加或减去指定的时间间隔。

select UserName,UserPwd,Sex,CreateDate,DATEADD(YEAR,1,CreateDate) from Sys_Userselect UserName,UserPwd,Sex,CreateDate,DATEADD(MONTH,1,CreateDate) from Sys_Userselect UserName,UserPwd,Sex,CreateDate,DATEADD(DAY,1,CreateDate) from Sys_Userselect UserName,UserPwd,Sex,CreateDate,DATEADD(HOUR,-1,CreateDate) from Sys_Userselect UserName,UserPwd,Sex,CreateDate,DATEADD(MINUTE,-1,CreateDate) from Sys_Userselect UserName,UserPwd,Sex,CreateDate,DATEADD(SECOND,-1,CreateDate) from Sys_User

DATEADD(YEAR,1,CreateDate)截图如下:
这里写图片描述
DATEADD(HOUR,-1,CreateDate)截图如下:
这里写图片描述

5、DATEDIFF()

DATEDIFF() 函数返回两个日期之间的时间差。
语法:DATEDIFF(datepart,startdate,enddate)
时间差:enddate-startdate

select UserName,UserPwd,Sex,CreateDate,DATEDIFF(YEAR,CreateDate,GETDATE()) from Sys_Userselect UserName,UserPwd,Sex,CreateDate,DATEDIFF(MONTH,CreateDate,GETDATE()) from Sys_Userselect UserName,UserPwd,Sex,CreateDate,DATEDIFF(DAY,CreateDate,GETDATE()) from Sys_Userselect UserName,UserPwd,Sex,CreateDate,DATEDIFF(HOUR,CreateDate,GETDATE()) from Sys_Userselect UserName,UserPwd,Sex,CreateDate,DATEDIFF(MINUTE,CreateDate,GETDATE()) from Sys_Userselect UserName,UserPwd,Sex,CreateDate,DATEDIFF(SECOND,CreateDate,GETDATE()) from Sys_User

DATEDIFF(DAY,CreateDate,GETDATE())截图如下:
这里写图片描述
DATEDIFF(HOUR,CreateDate,GETDATE())截图如下:
这里写图片描述

6、待发现

DATEDIFF() 函数返回两个日期

原创粉丝点击