sql server数据字符串分割功能sql
--分割字符串函数 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)