SQLserver字符串分割函数

来源互联网:

一、按指定符号分割字符串,返回分割后的元素个数

CREATE FUNCTION [dbo].[Get_StrArrayLength]
    (
      @str VARCHAR(1024) ,  --要分割的字符串  
      @split VARCHAR(10)  --分隔符号  
    )
RETURNS INT
AS 
    BEGIN  
        DECLARE @location INT  
        DECLARE @start INT  
        DECLARE @length INT  
  
        SET @str = LTRIM(RTRIM(@str))  
        SET @location = CHARINDEX(@split, @str)  
        SET @length = 1  
        WHILE @location <> 0 
            BEGIN  
                SET @start = @location + 1  
                SET @location = CHARINDEX(@split, @str, @start)  
                SET @length = @length + 1  
            END  
        RETURN @length  
    END  

二、按指定符号分割字符串,返回分割后指定索引的第几个元素

CREATE FUNCTION [dbo].[Get_StrArrayStrOfIndex]
    (
      @str 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 @str = LTRIM(RTRIM(@str))  
        SET @start = 1  
        SET @next = 1  
        SET @seed = LEN(@split)  
    
        SET @location = CHARINDEX(@split, @str)  
        WHILE @location <> 0
            AND @index > @next 
            BEGIN  
                SET @start = @location + @seed  
                SET @location = CHARINDEX(@split, @str, @start)  
                SET @next = @next + 1  
            END  
        IF @location = 0 
            SELECT  @location = LEN(@str) + 1  
 --这儿存在两种情况:1、字符串不存在分隔符号 2、字符串中存在分隔符号,跳出while循环后,@location为0,那默认为字符串后边有一个分隔符号。  
    
        RETURN SUBSTRING(@str,@start,@[email protected]start)  
    END  
此条目发表在学习笔记分类目录,贴了, , 标签。将固定链接加入收藏夹。

3 则回应给 SQLserver字符串分割函数

  1. 夏夏说:

    你的这个分享好多啊,我的只有几个。。。使用的justthis么?

  2. 文秘之家说:

    文章不错,来看看

发表评论

This site uses Akismet to reduce spam. Learn how your comment data is processed.