Sqlserver
 sql >> Baza danych >  >> RDS >> Sqlserver

Funkcja dzielenia przez przecinek w SQL Server 2008

Zmieniłem nazwę funkcji, aby nie nakładała się na to, co Split() funkcja naprawdę działa.

Oto kod:

CREATE FUNCTION dbo.GetColumnValue(
@String varchar(8000),
@Delimiter char(1),
@Column int = 1
)
returns varchar(8000)
as     
begin

declare @idx int     
declare @slice varchar(8000)     

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

declare @ColCnt int
    set @ColCnt = 1

while (@idx != 0)
begin     
    set @idx = charindex(@Delimiter,@String)     
    if @idx!=0 begin
        if (@ColCnt = @Column) return left(@String,@idx - 1)        

        set @ColCnt = @ColCnt + 1

    end

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

A oto użycie:

select dbo.GetColumnValue('Col1,Field2,VAlue3', ',', 3)


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Przegląd instrukcji PRINT w SQL Server

  2. Unikaj tych 4 typowych błędów DBA

  3. Jak uzyskać aktualną datę w SQL Server

  4. Korzystanie z wbudowanej funkcji konwertowania sql w kryteriach hibernacji

  5. Nieprawidłowa nazwa kolumny błąd sql