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

Tách một chuỗi rất lớn bằng dấu phân cách tùy chỉnh?

Đừng bận tâm. Đề phòng trường hợp người khác gặp phải vấn đề tương tự, thông tin sau từ tại đây hoạt động hoàn hảo trên các chuỗi lớn:

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. Ngoại lệ SQL khó chịu, có thể do một số mã được thực hiện sai

  2. Hiểu kích thước bộ nhớ ‘datetime2’ trong SQL Server

  3. Cách cài đặt SQL Server trên Red Hat 8

  4. Xóa số khỏi máy chủ sql chuỗi

  5. Bỏ bảng, sau đó không thể tạo lại bảng có cùng tên