在逛 MSSQL 板块的时候突然想到的问题,我也知道这类问题肯定已经有很多人都已经实现了。
不过本人还是喜欢自己尝试一下,用自己的方式
/*
* AUTHOR:Scorip
* CREATETIME:2013-03-25
* DESCRIPTION:类似于程序中的 split 函数,简化版
* 获取指定字符串中按照指定字符分割之后的指定 index 个元素
*/
CREATE FUNCTION fun_SplitStringByChar(
@splitChar CHAR(1), --指定分割符
@str VARCHAR(30), --要分割的字符串
@getIndex INT) --要获取的第几个元素
RETURNS VARCHAR(5)
AS
BEGIN
DECLARE @result VARCHAR(5)--返回的结果
--如果下标大于 0 则继续循环
WHILE(@getIndex>0)
BEGIN
--获取分隔符的INDEX
DECLARE @index INT
SET @index = CHARINDEX(@splitChar,@str)
--PRINT @index
IF(@index>0)
BEGIN
SET @result = SUBSTRING(@str,0,@index)--利用 SUBSTRING 函数截取
SET @str = SUBSTRING(@str,@index+1,LEN(@str)) --改变元字符串
END
ELSE
BEGIN
SET @result = @str
SET @str = ''
END
--PRINT @str
SET @getIndex = @getIndex - 1 --改变循环条件
END
RETURN @result
END
GO
/*
--调用示例
SELECT [master].[dbo].[fun_SplitStringByChar] (
',',
'1,2,3,4,5',
6 )
GO
*/