post

SQL智能感知插件:RedGate SQL Prompt

微软的SQL Server2008本身是自带智能提示功能,但是反应有点迟钝,还不支持远程数据库服务器的提示,所以大多数搞数据库的人还是会选择一些第三方的插件,我之前用过SQL Assistant,用起来很不爽,后来发现不少DBA都在使用SQL Prompt插件,于是我也装了一个,甚是好用啊!

SQL Prompt是RedGate的产品,5.1版本的官网价格$195,真是贵,我还是安心的用破解版,谁叫国内牛人这么多呢!下面简单介绍下这个插件
[Read more…]

post

SQL语句查询一年的所有天

利用SQL语句,查询某一年的所有天,可利用此结果查找报表数据中缺少的那一天。

[sql collapse=”false”]
–推荐方法
with tab as
(
select dateadd(day,ROW_NUMBER()over(order by GETDATE())-1,cast(‘2012-1-1’ as datetime)) as col
from sys.all_columns
)
select * from tab
where col<‘2013-01-01’

–下面方法不能查询出缺少的最后一天,但是查找中间的某一天还是很方便的
create table t
(
col date
)

insert into t select ‘2012-01-01’
insert into t select ‘2012-01-03’
insert into t select ‘2012-01-04’
insert into t select ‘2012-01-05’

select * from t a
left join t b on dateadd(day,1,a.col)=b.col

–较麻烦,但是能达到同样的效果,在没有权限操作系统表,也没有表的数据量大于要查询的天数时,可利用下面的方法

with tab as
(
select a1.id+a2.id+a3.id+a4.id+a5.id+a6.id+a7.id+a8.id+a9.id as id from
(select 0 as id union all select 1 )a1
cross join
(select 0 as id union all select 2 )a2
cross join
(select 0 as id union all select 4 )a3
cross join
(select 0 as id union all select 8 )a4
cross join
(select 0 as id union all select 16 )a5
cross join
(select 0 as id union all select 32 )a6
cross join
(select 0 as id union all select 64 )a7
cross join
(select 0 as id union all select 128 )a8
cross join
(select 0 as id union all select 256 )a9
)
select dateadd(day,id,cast(‘2012-1-1’ as datetime))
as col
from tab
where dateadd(day,id,cast(‘2012-1-1’ as datetime))<‘2013-01-01’
order by 1

[/sql]

post

工作常用SQL语句

批量执行修改,处理修改大量数据时(如30W),可以用类似下面的SQL分批处理。
[sql collapse=”false”]
while 1>0
begin
update top(1000) [order] set [id]=1,[status]=1
where [uid]=2 and [status]=0 and [created]<‘2011-04-06′
if @@rowcount<1000 break
waitfor delay ’00:00:01’
end
[/sql]

post

Sql 中常用的日期函数

原文来源于网络.

由于我们公司用的Ibatis框架,并且数据量很大,再处理各个问题时都要小心,要注意性能。

所有一些高效的方法很重要,下面从网络上搜集到的日期格式函数
[Read more…]