sql實現(xiàn)分段功能的函數(shù)/去掉重復記錄,獲取重復記錄
sql實現(xiàn)分段功能的函數(shù)
--簡單分段語句
declare @b varchar(20) select @b='a-b-c-d-e' --處理 declare @sql varchar(4000) select @sql= 'select '''+replace(@b,'-',''' union all select ''') '''' exec(@sql)
create function f_split(@SourceSql varchar(8000),@StrSeprate varchar(10)) returns @temp table(a varchar(100)) as begin declare @i int set @SourceSql=rtrim(ltrim(@SourceSql)) set @i=charindex(@StrSeprate,@SourceSql) while @i>=1 begin insert @temp values(left(@SourceSql,@i-1)) set @SourceSql=substring(@SourceSql,@i+1,len(@SourceSql)-@i) set @i=charindex(@StrSeprate,@SourceSql) end if @SourceSql<>'\' insert @temp values(@SourceSql) return end --用法: select * from dbo.f_split('A:B:C:D:E',':') --輸出 a 1 A 2 B 3 C 4 D 5 E
create procedure splitter @str varchar(1024) as declare @s varchar(1024) declare @i int set @s='select message from T_QQMsgLog where 1=1' set @i=1
去掉重復記錄,獲取重復記錄
--查詢一個表中有效去掉重復的記錄,UserID為自增長主鍵,RoleID為重復字段
select MIN(UserID) as UserID, RoleID from tmpTable group by RoleID
select RoleID from tmpTable group by RoleID HAVING (count(*) > 1)
select distinct * from tmpTable
--刪除重復記錄
select distinct * into #Tmp from tableName
drop table tableName
select * into tableName from #Tmp
drop table #Tmp
select MIN(UserID) as UserID, RoleID from tmpTable group by RoleID
select RoleID from tmpTable group by RoleID HAVING (count(*) > 1)
select distinct * from tmpTable
--刪除重復記錄
select distinct * into #Tmp from tableName
drop table tableName
select * into tableName from #Tmp
drop table #Tmp
posted on 2008-01-13 00:12 李亞 閱讀(1953) 評論(0) 編輯 收藏 引用 所屬分類: Sql Server