SQL中自己创建函数,分割字符串

常女士8866

常女士8866

2016-02-19 18:04

今天图老师小编要向大家分享个SQL中自己创建函数,分割字符串教程,过程简单易学,相信聪明的你一定能轻松get!

  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

(本文来源于图老师网站,更多请访问https://m.tulaoshi.com/bianchengyuyan/)

  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

(本文来源于图老师网站,更多请访问https://m.tulaoshi.com/bianchengyuyan/)

  SET QUOTED_IDENTIFIER ON

  GO

(本文来源于图老师网站,更多请访问https://m.tulaoshi.com/bianchengyuyan/)

  SET ANSI_NULLS ON

  GO

(本文来源于图老师网站,更多请访问https://m.tulaoshi.com/bianchengyuyan/)

  --- 这个函数直接调用了另外的两个函数,可以先阅读下面提到的两个函数

  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

(本文来源于图老师网站,更多请访问https://m.tulaoshi.com/bianchengyuyan/)

  else

  begin

  select @i = dbo.getstrcount(@str,',')

  select @location = charindex(@splitstr,@str,@start) 

  select @next = @next + 1

  select @int_return = @next

   end

   return @int_return

  end

(本文来源于图老师网站,更多请访问https://m.tulaoshi.com/bianchengyuyan/)

  GO

(本文来源于图老师网站,更多请访问https://m.tulaoshi.com/bianchengyuyan/)

  SET QUOTED_IDENTIFIER OFF

  GO

(本文来源于图老师网站,更多请访问https://m.tulaoshi.com/bianchengyuyan/)

  SET ANSI_NULLS ON

  GO

(本文来源于图老师网站,更多请访问https://m.tulaoshi.com/bianchengyuyan/)

  SET QUOTED_IDENTIFIER ON

  GO

(本文来源于图老师网站,更多请访问https://m.tulaoshi.com/bianchengyuyan/)

  SET ANSI_NULLS ON

  GO

(本文来源于图老师网站,更多请访问https://m.tulaoshi.com/bianchengyuyan/)

  -- 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

(本文来源于图老师网站,更多请访问https://m.tulaoshi.com/bianchengyuyan/)

  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

(本文来源于图老师网站,更多请访问https://m.tulaoshi.com/bianchengyuyan/)

  GO

(本文来源于图老师网站,更多请访问https://m.tulaoshi.com/bianchengyuyan/)

  SET QUOTED_IDENTIFIER OFF

  GO

(本文来源于图老师网站,更多请访问https://m.tulaoshi.com/bianchengyuyan/)

  SET ANSI_NULLS ON

  GO

(本文来源于图老师网站,更多请访问https://m.tulaoshi.com/bianchengyuyan/)
展开更多 50%)
分享

猜你喜欢

SQL中自己创建函数,分割字符串

编程语言 网络编程
SQL中自己创建函数,分割字符串

vc分割字符串的函数

编程语言 网络编程
vc分割字符串的函数

s8lol主宰符文怎么配

英雄联盟 网络游戏
s8lol主宰符文怎么配

字符串分割

编程语言 网络编程
字符串分割

Sql Server 字符串聚合函数

编程语言 网络编程
Sql Server 字符串聚合函数

lol偷钱流符文搭配推荐

英雄联盟 网络游戏
lol偷钱流符文搭配推荐

JavaScript中split字符串函数

Web开发
JavaScript中split字符串函数

字符串分割扩展 SplitEx

Delphi
字符串分割扩展 SplitEx

lolAD刺客新符文搭配推荐

英雄联盟
lolAD刺客新符文搭配推荐

买笔记本电脑主要看什么

买笔记本电脑主要看什么

重装系统教程

重装系统教程
下拉加载更多内容 ↓