• <ruby id="5koa6"></ruby>
    <ruby id="5koa6"><option id="5koa6"><thead id="5koa6"></thead></option></ruby>

    <progress id="5koa6"></progress>

  • <strong id="5koa6"></strong>
  • SQl使用方法總結(2)

    發表于:2012-02-14來源:未知作者:娃娃點擊數: 標簽:sql
    例子 ELECT DATEDIFF(day,2008-12-29,2008-12-30) 結果是1 ELECT DATEDIFF(day,2008-12-30,2008-12-29) 結果是-1 7.相同結構表去重復后進行復制 insert into 新表名select DomainInFo_FIp.D

      例子

      ELECT DATEDIFF(day,'2008-12-29','2008-12-30')

      結果是1

      ELECT DATEDIFF(day,'2008-12-30','2008-12-29')

      結果是-1

      7.相同結構表去重復后進行復制

      insert into 新表名select DomainInFo_FIp.D_Domain,源表名.D_ID,源表名.D_IP,源表名.stat from 源表名

      inner join (select min(D_ID) D_ID,distinct(D_Domain) as D_Domain from 源表名) TempTab on 源表名.D_ID = TempTab.D_ID

      復制代碼

      8.一個取一張表中域名第一個“.”之前部分,并寫入另外一張表的游標實現

      declare @D_Domain nvarchar(200); Declare Mycursor cursor for select D_Domain FROM dbo.DomainInFo_FIp Open Mycursor Fetch next from Mycursor into @D_Domain --開始抓數據 while @@FETCH_STATUS = 0 begin set @D_Domain=Left(@D_Domain,Charindex('.',@D_Domain)-1) if(Len(@D_Domain)>0 and @D_Domain<>'www') begin insert into dbo.DomainInFo_FIp_log (D_Domain)values(@D_Domain) end Fetch next from Mycursor into @D_Domain end Close Mycursor --關閉游標 Deallocate Mycursor --刪除游標

      復制代碼

      9.計算一表中某個字段的重復次數,游標實現

      declare @D_Domain nvarchar(200);declare @count int; Declare Mycursor cursor for select D_Domain FROM dbo.DomainInFo_FIp_log Open Mycursor Fetch next from Mycursor into @D_Domain --開始抓數據 while @@FETCH_STATUS = 0 begin select @count=count(*) from DomainInFo_FIp_log where D_Domain=@D_Domain update DomainInFo_FIp_log set numindex=@count where D_Domain=@D_Domain Fetch next from Mycursor into @D_Domain end Close Mycursor --關閉游標 Deallocate Mycursor --刪除游標

      復制代碼

      10.Replace函數的使用方法

      update dbo.DomainInFo_FIp set D_Domain=Replace(D_Domain,'=','')

      update dbo.DomainInFo_FIp set D_Domain=Replace(D_Domain,'<','')

      update dbo.DomainInFo_FIp set D_Domain=Replace(D_Domain,'-','')

      update dbo.DomainInFo_FIp set D_Domain=Replace(D_Domain,'~','')

      update dbo.DomainInFo_FIp set D_Domain=Replace(D_Domain,']','')

      update dbo.DomainInFo_FIp set D_Domain=Replace(D_Domain,'[','')

      update dbo.DomainInFo_FIp set D_Domain=Replace(D_Domain,'$','')

      update dbo.DomainInFo_FIp set D_Domain=Replace(D_Domain,'{','')

      update dbo.DomainInFo_FIp set D_Domain=Replace(D_Domain,'}','')

      update dbo.DomainInFo_FIp set D_Domain=Replace(D_Domain,'·','')

      復制代碼

      11.Substring函數與Len以及Left的配合使用(字段D_Domain值第一個字符是點的就清除這個點)

      update dbo.DomainInFo_FIp set D_Domain=Substring(D_Domain,2,Len(D_Domain)) where Left(D_Domain,1) ='.'

      12.一個實現怎么樣查詢IP所在段的函數代碼如下

      set ANSI_NULLS ONset QUOTED_IDENTIFIER ONgoALTER FUNCTION [dbo].[GetIP](@ip varchar(20)) RETURNS varchar(20) AS BEGIN declare @IPre varchar(20) SET @IPre='' select @IPre = right('00'+ParseName(@IP,4),3)+'.'+ right('00'+ParseName(@IP,3),3)+'.'+ right('00'+ParseName(@IP,2),3)+'.'+ right('00'+ParseName(@IP,1),3) RETURN @IPre END

      復制代碼

      如果大家想快速查詢的話我建議大家先把自己數據的IP段執行一下這個函數,然后每次查詢的時候直接轉要查詢的IP就行了,這樣速度會很快的。

      例子如下:

      -- =============================================-- Author: -- Create date: -- Description: -- =============================================ALTER PROCEDURE [dbo].[GetIPInfoByIP]@ip varchar(200) outputASBEGIN SET @ip =dbo.GetIP(@ip) SELECT iptitle FROM Qqwry WHERE GetIP(@ip) BETWEEN ipst AND ipend END

      復制代碼

      大家一定不要傻的這樣寫語句

      SELECT iptitle FROM Qqwry WHERE GetIP(@ip) BETWEEN ipst AND ipend

      因為這樣的速度是極慢的,那是因為每一次檢查都要轉化。

      在這里也提示大家在寫Sql語句時不要把函數直接寫在查詢語句內,當然 如果是必須的那就沒有辦法了只能那樣了。

      13.解決數據庫正在使用無法分離的存儲過程

    View Code

      set ANSI_NULLS ONset QUOTED_IDENTIFIER ONgoALTER 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

    原文轉自:http://www.kjueaiud.com

    老湿亚洲永久精品ww47香蕉图片_日韩欧美中文字幕北美法律_国产AV永久无码天堂影院_久久婷婷综合色丁香五月

  • <ruby id="5koa6"></ruby>
    <ruby id="5koa6"><option id="5koa6"><thead id="5koa6"></thead></option></ruby>

    <progress id="5koa6"></progress>

  • <strong id="5koa6"></strong>