您的位置:首页 > 数据库

Sql常见问题总结二(Sql语句怎么样查询IP,游标去重复,各种函数使用,各种取时间格式,字符串精确排序,超时锁问题)

2011-12-31 11:22 1051 查看
阅读全文:http://www.sufeinet.com/forum.php?mod=viewthread&tid=401

导读部分
------------------------------------------------------------------------------------------------------------
SQL Server 2005 学习笔记系列文章

http://www.sufeinet.com/forum.php?mod=viewthread&tid=26

这篇文章是上篇SQl使用方法总结 的延续篇

1.当很多在共用你自己的数据时,时不时的会报这种错误“已超过了锁请求超时时段”

直接把下在面的存储过程 放到你的Master数据库执行一下就可以了

View Code

set ANSI_NULLS ON
set QUOTED_IDENTIFIER ON
go

ALTER   proc   [dbo].[p_killspid]
@dbname   varchar(200) --要关闭进程的数据库名
as
declare   @sql     nvarchar(500)
declare   @spid   nvarchar(20)

declare   #tb   cursor   for
select   spid=cast(spid   as   varchar(20))   from   master..sysprocesses   where   dbid=db_id(@dbname)
open   #tb
fetch   next   from   #tb   into   @spid
while   @@fetch_status=0
begin
exec( 'kill   '+@spid)
fetch   next   from   #tb   into   @spid
end
close   #tb
deallocate   #tb


使用方法

exec dbo.p_killspid  ‘数据库名称’


 就先到这里吧,虽然不多,但也是大家常 见的问题,希望各位网友也把自己的经验分享一下。

14.删除表中重复数大于N的数据

delete from dbo.DomainInFo_FIp_domain_old
where D_IP in(select D_IP FROM
(select  max(D_IP)AS D_IP ,count(D_IP) AS con FROM DomainInFo_FIp_domain_old group by D_IP)as t
WHERE con>500000)


15.把表中重复数小于N的数据写入到一个新表中去(比较删除的速度快100倍以上)

insert   dbo.DomainInFo_FIp_domain_new
select D_Domain,D_IP from  dbo.DomainInFo_FIp_domain_old
where D_IP in(
select D_IP FROM
(
select max(D_Domain)as D_Domain, max(D_IP)AS D_IP ,count(D_IP) AS con
FROM  dbo.DomainInFo_FIp_domain
group by D_IP
) as t
WHERE con<5000
)


16.把一个表中某列转成以豆号分隔的字符串

declare @column_name varchar(2000)
set    @column_name = ''
select @column_name = @column_name + convert(varchar,column_name )  +','   from table


17.怎么取时间中的小时,分钟等值

返回表示指定日期的指定日期部分的整数。语法

DATEPART ( ‘下面备注里面的选项’, date )

参数 datepart 指定要返回的日期部分的参数。有关详细信息,

日期部分 缩写 年份 yy、yyyy

季度 qq、q

月份 mm、m

每年的某一日 dy、y

日期 dd、d

星期 wk、ww

工作日 dw

小时 hh

分钟 mi、n

秒 ss、s

毫秒 ms

date 返回 datetime 值(或可隐式转换为 datetime 值的值)的表达式。date 参数也可以是日期格式的字符串。datetime 数据类型仅用于 1753 年 1 月 1 日之后的日期。 对于之前的日期,将存储为字符数据。在输入 datetime 值时,请始终使用单引号将它们括起来。

如果只指定年份的后两位数字,小于或等于两位截止年份配置选项值的后两位数字的值将与截止年份处于同一世纪中。比此选项值的后两位数字大的值先于截止年份的世纪。例如,如果两位数字的截止年份是 2049(默认值),则“49”将被解释为 2049,而“50”将被解释为 1950。为了避免产生歧义,请使用四位年份。

有关指定日期的详细信息,请参阅数据类型中的 datetime。

返回值 int
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐