• 博客园logo
  • 会员
  • 众包
  • 新闻
  • 博问
  • 闪存
  • 赞助商
  • HarmonyOS
  • Chat2DB
    • 搜索
      所有博客
    • 搜索
      当前博客
  • 写随笔 我的博客 短消息 简洁模式
    用户头像
    我的博客 我的园子 账号设置 会员中心 简洁模式 ... 退出登录
    注册 登录
thankgoodness
博客园    首页    新随笔    联系   管理    订阅  订阅

SQL实现split函数,自定义分割字符,自定义取出第几个分割字符前的字符串

自定义取出第几个分割字符前的字符串,默认位置(0)
格式:dbo.split(字段名,'分隔字符',取出的第几个字符串)
如果没有分隔的字符,则返回整个字符串。
如果取出的位置字符串的位置超出Index则返回空。

CREATE FUNCTION [dbo].[split]
 (
@str nvarchar(4000),@code varchar(10),@no int )  
RETURNS varchar(200)
AS  
BEGIN 

declare @intLen int
declare @count int
declare @indexb  int
declare @indexe  int
set @intLen=len(@code)
set @count=0
set @indexb=1


if @no=0
  
if charindex(@code,@str,@indexb)<>0
     
return left(@str,charindex(@code,@str,@indexb)-1) 
  
else
     
return @str

while charindex(@code,@str,@indexb)<>0
  
begin
       
set @count=@count+1
       
if @count=@no
         
break
       
set @indexb=@intLen+charindex(@code,@str,@indexb)
  
end 


if @count=@no
  
begin

      
set @indexe=@intLen+charindex(@code,@str,@indexb)
          
if charindex(@code,@str,@indexe)<>0
             
return substring(@str,charindex(@code,@str,@indexb)+len(@code),charindex(@code,@str,@indexe)-charindex(@code,@str,@indexb)-len(@code))
          
else 
             
return right(@str,len(@str)-charindex(@code,@str,@indexb)-len(@code)+1)

  
end

return ''

END
posted @ 2008-05-26 16:22  宇晨  阅读(699)  评论(0)    收藏  举报
刷新页面返回顶部
博客园  ©  2004-2025
浙公网安备 33010602011771号 浙ICP备2021040463号-3