|
| |
名片设计 CorelDRAW Illustrator AuotoCAD Painter 其他软件 Photoshop Fireworks Flash |
|
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 -- getstrcount 输入一个没有分割的字符串,以及分割符 --返回数组的个数 CREATE function getstrcount (@str varchar(8000),@splitstr varchar(100)) --returns varchar(8000) returns int as begin declare @int_return int declare @start int declare @next int declare @location int select @next = 0 select @location = 1 if len(@str)<len(@splitstr) select @int_return =0 if charindex(@splitstr,@str) = 0 select @int_return =0 while (@location<>0) begin select @start = @location + 1 select @location = charindex(@splitstr,@str,@start) select @next = @next + 1 select @int_return = @next end return @int_return end GO SET QUOTED_IDENTIFIER OFF GO SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO SET ANSI_NULLS ON GO -- getstrofindex 输入一个未分割的字符串,舒适分割符号,舒适要取得的字符位置 -- 返回 制定位置的字符串 CREATE function getstrofindex (@str varchar(8000),@splitstr varchar(4),@index int=0) returns varchar(8000) as begin declare @str_return varchar(8000) declare @start int declare @next int declare @location int select @start =1 select @next = 1 --假如习惯从0开始则select @next =0 select @location = charindex(@splitstr,@str,@start) while (@location <>0 and @index > @next ) begin select @start = @location +1 select @location = charindex(@splitstr,@str,@start) select @next =@next +1 end if @location =0 select @location =len(@str)+1 --假如是因为没有逗号退出,则认为逗号在字符串后 select @str_return = substring(@str,@start,@location -@start) --@start肯定是逗号之后的位置或者就是初始值1 if (@index <> @next ) select @str_return = \\\'\\\' --假如二者不相等,则是因为逗号太少,或者@index小于@next的初始值1。 return @str_return end GO SET QUOTED_IDENTIFIER OFF GO SET ANSI_NULLS ON GO 返回类别: 教程 上一教程: 如何实现MYSQL中的用户治理 下一教程: SQL SEVER 2000的系统数据库和索引 您可以阅读与"SQL中自己创建函数,分割字符串"相关的教程: · MYSQL的字符串函数 · 几个测试SQL,测试SQL处理字符串 · SQL自定义函数的应用 · MYSQL MAX版本如何修改默认字符集 · SQL SERVER和ORACLE常用函数对比 |
| 快精灵印艺坊 版权所有 |
首页 |
||