****案例:
现有一字符串 'aaaa,bbbb,cccc,' ,根据“,”拆分字符串,并返回结果集。
****方案:
下面给出了一个通用的自定义函数的源码,仅供参考。
****注意:
字符串中如果设计到多国语言文字(韩文、日文),请自己进行灵活的处理。
****源码:
if exists ( select * from dbo.sysobjects where id = object_id (N ' [dbo].[fn_Comm_SplitStr] ' ) and xtype in (N ' FN ' , N ' IF ' , N ' TF ' )) drop function [ dbo ] . [ fn_Comm_SplitStr ] GO SET QUOTED_IDENTIFIER OFF GO SET ANSI_NULLS OFF GO /**/ /* ******************************************** function : split string ,return table create by : create at : 2007-02-10 modify by : modify at : remark : case : SELECT * FROM DBO.fn_Comm_SplitStr('aaaa,bbbb,cccc,',',') ******************************************** */ CREATE FUNCTION DBO.fn_Comm_SplitStr ( @SOURCE_STR NVARCHAR ( 4000 ) , @SEPARATE_STR VARCHAR ( 10 ) ) RETURNS @TSTR TABLE ( STR1 NVARCHAR ( 200 ) , SORT INT ) AS BEGIN DECLARE @I INT , @J INT SELECT @SOURCE_STR = RTRIM ( LTRIM ( @SOURCE_STR )) , @I = CHARINDEX ( @SEPARATE_STR , @SOURCE_STR ) , @J = 0 WHILE @I >= 1 BEGIN INSERT @TSTR (STR1,SORT) VALUES ( LEFT ( @SOURCE_STR , @I - 1 ), @J + 1 ) SELECT @SOURCE_STR = SUBSTRING ( @SOURCE_STR , @I + 1 , LEN ( @SOURCE_STR ) - @I ) , @I = CHARINDEX ( @SEPARATE_STR , @SOURCE_STR ) , @J = @J + 1 END IF @SOURCE_STR <> '' INSERT @TSTR (STR1,SORT) VALUES ( @SOURCE_STR , @J + 1 ) RETURN END GO SET QUOTED_IDENTIFIER OFF GO SET ANSI_NULLS ON GO