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

phân tách các giá trị được phân tách bằng dấu phẩy và lưu trữ trong bảng trong máy chủ sql

Bạn sẽ cần tạo một hàm phân tách tương tự như sau:

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;

Sau đó, trong thủ tục đã lưu trữ của bạn, bạn sẽ gọi hàm để tách chuỗi của mình:

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

Khi bạn thực thi thủ tục đã lưu trữ, nó sẽ chia nhỏ các giá trị và chèn nhiều hàng vào bảng của bạn:

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

Xem SQL Fiddle với Demo. Điều này sẽ chèn kết quả sau:

| 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. Cách cài đặt SQL Server trên máy Mac với VirtualBox

  2. Cách sử dụng PHP để kết nối với máy chủ sql

  3. Cách sử dụng các tính năng AlwaysOn của SQL Server

  4. Làm cách nào để thực hiện tìm kiếm phân biệt chữ hoa chữ thường trong mệnh đề WHERE (Tôi đang sử dụng SQL Server)?

  5. Phân tích cú pháp JSON trong TSQL