自寫的幾個常用Sql字串拆分函式

2022-02-15 12:08:42 字數 2848 閱讀 1603

--用指定的字元拆分乙個字串,並傳入乙個字串判斷傳入的這個字串是否存在於拆分以後的字串陣列中

create function splitstring(@expression varchar(500),@char varchar(10),@str varchar(50))  

returns bit  

as  

begin   

--如果傳進來的字串是null則返回0   

if(isnull(@expression,' ')=' ')

return 0

declare @beginindex int,@endindex int  --擷取子串的起始索引和結束索引      

declare @count int --記錄迴圈的次數  

set @beginindex=1--注意:sql中字串的索引是從1開始  

set @count=0  

while(1=1)  

begin  

set @count=@count+1  

set @endindex=charindex(@char,@expression,@beginindex)  

--如果沒有找到分隔符,則將整個要分割的串與需要判斷的串對比  

if(@endindex=0)  

begin  

--如果是第一次擷取子串  

if(@count=1)  

begin  

if(@expression=@str)  

begin  

return 1  

end  

begin  

return 0  

end   

end   

else --如果是最後一次擷取子串,則將最後乙個分隔符後面的字串取出來與需要判斷的串對比  

begin  

if(@str=substring(@expression,@beginindex,len(@expression)-@beginindex+1))  

begin  

return 1  

end  

else  

begin  

return 0  

end  

end      

end  

--如果匹配,則返回1  

if(@str=substring(@expression,@beginindex,@endindex-@beginindex))  

begin  

return 1  

end  

else  --如果不匹配則繼續尋找  

begin  

set @beginindex=@endindex+1  

end  

end   

return 0  

end  

--用指定的字元拆分乙個字串,並傳入乙個索引,返回拆分後指定索引的字串(索引從1開始)

create function indexofarray(@expression varchar(500),@char varchar(10),@index int)

returns varchar(200)

asbegin    

declare @beginindex int,@endindex int  --擷取子串的起始索引和結束索引    

declare @count int --記錄迴圈的次數

set @beginindex=1 --注意:sql中字串的索引是從1開始

set @count=0

while(1=1)

begin

set @count=@count+1

set @endindex=charindex(@char,@expression,@beginindex)

--如果沒有找到分隔符,則擷取最後乙個分隔符到字串末尾的子串

if(@endindex=0)

begin

return substring(@expression,@beginindex,len(@expression)-@beginindex+1)

end        

--如果這一次擷取出來的字串的索引是指定索引,則返回擷取出來的字串

if(@count=@index)

begin    

return substring(@expression,@beginindex,@endindex-@beginindex)            

endelse  --否則繼續

begin

set @beginindex=@endindex+1

continue

endend    

return ''

endgo

--用指定的字元拆分乙個字串,並傳入乙個字串判斷傳入的這個字串

--是否與拆分以後的字串陣列中指定索引的字串相等

create function splitequare(@expression varchar(200),@char varchar(10),@index int,@str varchar(100))

returns bit

asbegin

declare @splitstr varchar(100)

set @splitstr=dbo.indexofarray(@expression,@char,@index)

if(@splitstr=@str)

begin

return 1

endelse

begin

return 0

endreturn 0

endgo

SQL 字串拆分

有這樣乙個字串 中,國,中,人民,國,現代工業化程序,國 處理過之後變成 中,國,人民,現代工業化程序 以下是我的方法,有什麼不對的地方還請各位指點 刪除重複的字元 declare v1 nvarchar 100 declare v2 nvarchar 100 declare v3 nvarchar...

sql拆分字串

拆分字元卡 create function s id varchar 20 編號串 varchar max returns tab table id varchar 20 編號 varchar 30 begin declare ipos int,bh varchar 20 while 1 0 beg...

SQL 拆分字串的經典方法

經典的拆分字串的語句 基礎資料 create table 1 c name nvarchar 30 c desc nvarchar 100 insert 1 select n 張三 n 周一,周二,週三 union select n 李四 n 周一,周四,週六 union select n 王五 n...