How to Split String by Character into Separate Columns in SQL Server

前端 未结 5 1229
清歌不尽
清歌不尽 2020-12-03 19:17

I have one field in SQL Server containing section, township and range information, each separated by dashes; for example: 18-84-7. I\'d like to have this infor

5条回答
  •  北荒
    北荒 (楼主)
    2020-12-03 19:41

    you could use something like this (posted by @canon)

    CREATE FUNCTION [dbo].[Split]
    (   
     @String varchar(max)
    ,@Delimiter char
    )
    RETURNS @Results table
    (
     Ordinal int
    ,StringValue varchar(max)
    )
    as
    begin
    
        set @String = isnull(@String,'')
        set @Delimiter = isnull(@Delimiter,'')
    
        declare
         @TempString varchar(max) = @String
        ,@Ordinal int = 0
        ,@CharIndex int = 0
    
        set @CharIndex = charindex(@Delimiter, @TempString)
        while @CharIndex != 0 begin     
            set @Ordinal += 1       
            insert @Results values
            (
             @Ordinal
            ,substring(@TempString, 0, @CharIndex)
            )       
            set @TempString = substring(@TempString, @CharIndex + 1, len(@TempString) - @CharIndex)     
            set @CharIndex = charindex(@Delimiter, @TempString)
        end
    
        if @TempString != '' begin
            set @Ordinal += 1 
            insert @Results values
            (
             @Ordinal
            ,@TempString
            )
        end
    
        return
    end
    

    for more take a look at How to split string using delimiter char using T-SQL?

提交回复
热议问题