Sqlserver
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Sqlserver

Chức năng phân chia bằng dấu phẩy trong SQL Server 2008

Tôi đã thay đổi tên hàm để nó không bị trùng lặp trong Split() chức năng thực sự hoạt động.

Đây là mã:

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

Và đây là cách sử dụng:

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. Phiên bản Web SQL Server 2008

  2. TSQL - Chọn Top 10 &hiển thị phần còn lại là 'Khác'

  3. Áp dụng như trên tất cả các cột mà không chỉ định tất cả các tên cột?

  4. Bí danh tham chiếu (được tính bằng SELECT) trong mệnh đề WHERE

  5. Cách khắc phục “Máy chủ không được định cấu hình cho TRUY CẬP DỮ LIỆU” trong SQL Server