Web探索|Asp.net||Jquery|MVC

Web前沿技术、移动解决方案
  博客园  :: 首页  :: 新随笔  :: 管理

MS SQL使用技巧总结

Posted on 2012-06-29 10:02  reckcn  阅读(255)  评论(0)    收藏  举报

1.汇总时值为空是默认显示0

   select isnull(sum(字段名称),0) from 表名;

2.判断表中是否存在记录的SQL语句 

  判断表中是否存在记录,我们惯常使用的语句是:
  select COUNT(*) from tableName where conditions
  如果只是判断记录是否存在,而不需要获取实际表中的记录数,网上还有一种推荐做法:
  if exists (select * from tableName where conditions) select '1' else select '0'
  通过返回值去判断是否存在。
  
View Code
IF EXISTS(SELECT * from dbo.PMP_MilestonPlanDtl1 wHERE  Xm_SubItemID='@ItemSubCode') SELECT OID,RefPK, Mil_Name,Mil_StartDate, Mil_EendDate, Mil_Percent, CreateUserID, CreateDate, Xm_SubItemID, Xm_SubItemName FROM dbo.PMP_MilestonPlanDtl1  WHERE Xm_SubItemID='@ItemSubCode' ELSE select sectionname AS Mil_Name,pstartdate AS Mil_StartDate,penddate AS Mil_EendDate,pfpersent AS Mil_Percent from uf_xmglnet.dbo.pmp_Milestonedefine where  itemsubID='@ItemSubCode' and ismilestone=1

 3.多行结果转换为一行,有逗号隔开

代码:

View Code
-- 多行
select tid from typeinfo where pid=4
-- 一行
select STUFF((Select ','+Convert(varchar(50),tid) FROM typeinfo where pid=4 FOR XML PATH('')),1,1,'') as tid


如图:

4.Sql Server常用时间段查询汇总

 

实例(我的)表名:mytable 字段名:mydate

(一)、当天(某两个时间段)

select * from mytable where DATEDIFF(dd,mydate,GETDATE())=0

语法:DATEDIFF(datepart,startdate,enddate)

意义:DATEDIFF() 函数返回两个日期之间的天数。

datepart 参数值:(表1-1)

datepart缩写
yy, yyyy
季度 qq, q
mm, m
年中的日 dy, y
dd, d
wk, ww
星期 dw, w
小时 hh
分钟 mi, n
ss, s
毫秒 ms
微妙 mcs
纳秒 ns

 

例如:
 SELECT DATEDIFF(dd,'2012-5-17','2012-5-18') AS DiffDate

结果:

DiffDate
1

 

 

 

(二)、本周

select * from mytable where 
    DATEPART(wk, mydate)==DATEPART(wk,GETDATE()) and -- 周时间相等
    DATEPART(yy, mydate) = DATEPART(yy, GETDATE())   -- 年时间相等

语法:DATEDIFF(datepart,date)

意义:DATEPART() 函数用于返回日期/时间的单独部分,比如年、月、日、小时、分钟等等。

datepart 参数值:见表(1-1)。

 

(三)、本月

select * from mytable where 
    DATEPART(mm, mydate)==DATEPART(mm,GETDATE()) and -- 月时间相等
    DATEPART(yy, mydate) = DATEPART(yy, GETDATE())   -- 年时间相等

语法:DATEDIFF(datepart,date)

意义:DATEPART() 函数用于返回日期/时间的单独部分,比如年、月、日、小时、分钟等等。

datepart 参数值:见表(1-1)。

...其它如上语法。