SQL中自己创建函数,分割字符串
if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[getEPnum]') and xtype in (N'FN', N'IF', N'TF'))
drop function [dbo].[getEPnum] GO if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[getstrcount]') and xtype in (N'FN', N'IF', N'TF')) drop function [dbo].[getstrcount] GO if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[getstrofindex]') and xtype in (N'FN', N'IF', N'TF')) drop function [dbo].[getstrofindex] GO SET QUOTED_IDENTIFIER ON GO SET ANSI_NULLS ON GO --- 这个函数直接调用了另外的两个函数,可以先阅读下面提到的两个函数 CREATE function getEPnum (@str varchar(8000)) returns varchar(8000) as begin declare @str_return varchar(8000) declare @i int declare @temp_i int declare @onlineornot int declare @findepnumok int -- 用来取得一个epnum, -- 规则:首先从chatid中取,如果有在线得,则取得最前面得在线得返回 -- 如果全部不在线,则返回 ‘00000000’ select @findepnumok = 0 select @temp_i = 0 IF len(@str)<=0 begin SELECT @str_return = '00000000' end else begin select @i = dbo.getstrcount(@str,',') WHILE @temp_i<@i BEGIN select @onlineornot = online from wwchat_user where epnum=dbo.getstrofindex(@str,',',@temp_i) IF (@onlineornot=1) begin select @str_return =dbo.getstrofindex(@str,',',@temp_i) select @findepnumok = 1 --找到epnum后置为1 BREAK end ELSE begin select @temp_i = @temp_i + 1 select @findepnumok = 0 --找不到epnum后置为1 end END if @findepnumok = 0 begin SELECT @str_return = '00000000' end end return @str_return end GO SET QUOTED_IDENTIFIER OFF GO SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO SET ANSI_NULLS ON GO (编辑:徐州站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |