Sqlserver
 sql >> Teknologi Basis Data >  >> RDS >> Sqlserver

pisahkan nilai yang dipisahkan koma dan simpan dalam tabel di server sql

Anda perlu membuat fungsi split yang mirip dengan ini:

create FUNCTION [dbo].[Split](@String varchar(MAX), @Delimiter char(1))       
returns @temptable TABLE (items varchar(MAX))       
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;

Kemudian dalam prosedur tersimpan Anda, Anda akan memanggil fungsi untuk membagi string Anda:

ALTER PROCEDURE [dbo].[spInsertDistributionRuleListType]
(
  @Rule_ID int,
  @ListType_ID int,
  @Values VARCHAR(MAX)=NULL
)
AS
BEGIN

    INSERT INTO DistributionRule_x_ListType (Rule_ID, ListType_ID, Value)
    SELECT @Rule_ID, @ListType_ID, items
    FROM [dbo].[Split] (@Values, ',')  -- call the split function 

END

Saat Anda menjalankan prosedur tersimpan, itu akan membagi nilai dan menyisipkan beberapa baris ke dalam tabel Anda:

exec spInsertDistributionRuleListType 1, 2, '319,400,521,8465,2013';

Lihat SQL Fiddle dengan Demo. Ini akan memasukkan hasil berikut:

| RULE_ID | LISTTYPE_ID | VALUE |
---------------------------------
|       1 |           1 |    10 |
|       1 |           2 |   319 |
|       1 |           2 |   400 |
|       1 |           2 |   521 |
|       1 |           2 |  8465 |
|       1 |           2 |  2013 |


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Ubah Password pada SA Login di SQL Server (Contoh T-SQL)

  2. Dapatkan ukuran semua tabel di database

  3. sql server nama objek tidak valid - tetapi tabel tercantum dalam daftar tabel SSMS

  4. cara membuat data Anda horizontal

  5. Bagaimana cara mengubah nilai kolom identitas secara terprogram?