SQL实现split函数,自定义分割字符,自定义取出第几个分割字符前的字符串
                                                            生活随笔
收集整理的這篇文章主要介紹了
                                SQL实现split函数,自定义分割字符,自定义取出第几个分割字符前的字符串
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.                        
                                
                            
                            
                            自定義取出第幾個分割字符前的字符串,默認(rèn)位置(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
  
 
                        
                        
                        格式: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
轉(zhuǎn)載于:https://www.cnblogs.com/hanguoji/archive/2005/12/02/289322.html
總結(jié)
以上是生活随笔為你收集整理的SQL实现split函数,自定义分割字符,自定义取出第几个分割字符前的字符串的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
 
                            
                        - 上一篇: VS中安装.nupkg文件
- 下一篇: 得到某月的天数
