Sqlserver
 sql >> база данни >  >> RDS >> Sqlserver

Разделяне на много голям низ с персонализиран разделител?

Няма значение. Само в случай, че някой друг се сблъска със същия проблем, следното от тук работи перфектно на големи низове:

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. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Неемоционален логически поглед към конвенциите за именуване на SQL Server

  2. SQL Server 2008 - различни редове на сортиране на VARCHAR срещу NVARCHAR стойности

  3. Съставен първичен ключ в променлива тип таблица

  4. Как да конвертирате низ в шестнадесетичен и обратно?

  5. SqlParameter вече се съдържа от друга колекция SqlParameterCollection - мами ли using() {}?