SQL中实现SPLIT函数几种方法总结(必看篇)
例1
代码如下
createfunctionf_split(@SourceSqlvarchar(8000),@StrSepratevarchar(10)) returns@temptable(avarchar(100)) --实现split功能的函数 --date:2003-10-14 as begin declare@iint set@SourceSql=rtrim(ltrim(@SourceSql)) set@i=charindex(@StrSeprate,@SourceSql) while@i>=1 begin insert@tempvalues(left(@SourceSql,@i-1)) set@SourceSql=substring(@SourceSql,@i+1,len(@SourceSql)-@i) set@i=charindex(@StrSeprate,@SourceSql) end if@SourceSql<>'' insert@tempvalues(@SourceSql) return end select*fromdbo.f_split('1,2,3,4',',') a -------------------- 1 2 3 4 (所影响的行数为4行)
例2
代码如下
--SQLServerSplit函数 --Author:zc_0101 --说明: --支持分割符多字节 --使用方法 --Select*FROMDBO.F_SQLSERVER_SPLIT('1203401230105045','0') --select*fromDBO.F_SQLSERVER_SPLIT('abc1234a12348991234','1234') --Select*fromDBO.F_SQLSERVER_SPLIT('ABC',',') CREATEFUNCTIONF_SQLSERVER_SPLIT(@Long_strvarchar(8000),@split_strvarchar(100)) RETURNS@tmpTABLE( IDinTIDENTITYPRIMARYKEY, short_strvarchar(8000) ) AS BEGIN DECLARE@long_str_Tmpvarchar(8000),@short_strvarchar(8000),@split_str_lengthint SET@split_str_length=LEN(@split_str) IFCHARINDEX(@split_str,@Long_str)=1 SET@long_str_Tmp=SUBSTRING(@Long_str,@split_str_length+1,LEN(@Long_str)-@split_str_length) ELSE SET@long_str_Tmp=@Long_str IFCHARINDEX(REVERSE(@split_str),REVERSE(@long_str_Tmp))>1 SET@long_str_Tmp=@long_str_Tmp+@split_str ELSE SET@long_str_Tmp=@long_str_Tmp IFCHARINDEX(@split_str,@long_str_Tmp)=0 InsertINTO@tmpselect@long_str_Tmp ELSE BEGIN WHILECHARINDEX(@spl(www.nhooo.com)it_str,@long_str_Tmp)>0 BEGIN SET@short_str=SUBSTRING(@long_str_Tmp,1,CHARINDEX(@split_str,@long_str_Tmp)-1) DECLARE@long_str_Tmp_LENINT,@split_str_Position_ENDint SET@long_str_Tmp_LEN=LEN(@long_str_Tmp) SET@split_str_Position_END=LEN(@short_str)+@split_str_length SET@long_str_Tmp=REVERSE(SUBSTRING(REVERSE(@long_str_Tmp),1,@long_str_Tmp_LEN-@split_str_Position_END)) IF@short_str<>''InsertINTO@tmpselect@short_str END END RETURN END
例3
Sql2000andSql2005实用的Split函数
代码如下
sql2000 CREATEFUNCTION[dbo].[splitstring_array] ( @stringnvarchar(4000),@splitchar(1) ) RETURNS@arraytable ( oneStrnvarchar(100) ) AS BEGIN declare@v_codevarchar(60) --zell2006-05-26 --set@string=replace(@string,'',@split) --set@string=replace(@string,',',@split) whilelen(@string)>0 begin ifcharindex(@split,@string,1)!=0 begin set@v_code=substring(@string,1,charindex(@split,@string,1)-1) set@string=substring(@string,charindex(@split,@string,1)+1,len(@string)) end elseifcharindex(@split,@string,1)=0 begin set@v_code=@string set@string='' end insertinto@array(onestr)values(@v_code) end RETURN END sql2005 CREATEfunction[dbo].[func_splitid] (@strvarchar(max),@splitvarchar(10)) RETURNS@tTable(c1nvarchar(100)) AS BEGIN DECLARE@xXML SET@x=CONVERT(XML,'<items><itemid="'+REPLACE(@str,@split,'"/><itemid="')+'"/></items>') INSERTINTO@tSELECTx.item.value('@id[1]','nvarchar(100)')FROM@x.nodes('//items/item')ASx(item) RETURN END
以上这篇SQL中实现SPLIT函数几种方法总结(必看篇)就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持毛票票。