--分割字符串函数
create FUNCTION [dbo].[GetSplitStringValueInIndex]
(
@originalStr VARCHAR(1024), --要分割的字符串
@split VARCHAR(10), --分隔符号
@index INT --取第几个元素
)
RETURNS VARCHAR(1024)
AS
BEGIN
DECLARE @location INT; --定义第一次出现分隔符号的位置
DECLARE @start INT;--定义开始位置
DECLARE @next INT; --定义下一个位置
DECLARE @seed INT; --定义分割符号的长度
SET @originalStr = LTRIM(RTRIM(@originalStr));--去除字符串左右2侧空格
SET @start = 1;
SET @next = 1;
SET @seed = LEN(@split);
SET @location = CHARINDEX(@split, @originalStr);--第一次出现分隔符号的位置
WHILE @location <> 0
AND @index > @next
BEGIN
SET @start = @location + @seed;
SET @location = CHARINDEX(@split, @originalStr, @start);
SET @next = @next + 1;
END
IF @location = 0
BEGIN
SELECT @location = LEN(@originalStr) + 1;
END
--存在两种情况:
--1、字符串不存在分隔符号。
--2、字符串中存在分隔符号,跳出while循环后,@location为0,那默认为字符串后边有一个分隔符号。
RETURN SUBSTRING(@originalStr, @start, @location -@start);
END
select [dbo].[GetSplitStringValueInIndex]('978-7-5007-7234-7','-',4)