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

Разделете функцията със запетая в SQL Server 2008

Промених името на функцията, така че да не се припокрива в това, което Split() функция наистина го прави.

Ето кода:

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

А ето и употребата:

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. Грешка 40 на доставчика с име pipes не можа да отвори връзка към грешка 2 на SQL Server

  2. Как по-долу два израза за актуализиране се различават в SQL?

  3. Трудност при записването на Stored Proc за извличане на данни за Jqgrid Pagination

  4. Как да използвате дизайнера на заявки в SQL Server

  5. Изберете първите 3 реда от всяка таблица в база данни