sql >> Database teknologi >  >> RDS >> Sqlserver

Splitter du en meget stor streng med en brugerdefineret skilletegn?

Glem det. Bare hvis en anden står over for det samme problem, er følgende fra her fungerer perfekt på store strenge:

CREATE FUNCTION dbo.SplitLarge(@String varchar(8000), @Delimiter char(1))     
returns @temptable TABLE (items varchar(8000))     
as     
begin     
    declare @idx int     
    declare @slice varchar(8000)     

    select @idx = 1     
        if len(@String)<1 or @String is null  return     

    while @idx!= 0     
    begin     
        set @idx = charindex(@Delimiter,@String)     
        if @idx!=0     
            set @slice = left(@String,@idx - 1)     
        else     
            set @slice = @String     

        if(len(@slice)>0)
            insert into @temptable(Items) values(@slice)     

        set @String = right(@String,len(@String) - @idx)     
        if len(@String) = 0 break     
    end 
return     
end


  1. SQL-forespørgsel viser ikke det første resultat?

  2. Bind 3 tabeller i 2 forskellige tilfælde i MySQL

  3. SQLite JSON_REMOVE()

  4. MySQL VS Postgres/POSTGIS rumlige databaseunderstøttelse