参数中单独的逗号字符串并保存在表SQL中

时间:2017-03-04 20:20:07

标签: sql-server tsql triggers

我有一个带逗号的参数。 像@parameter = 'abc,xyz,fgh'一样 我想把它分开:

column1     column2
1           abc
1           xyz
1           fgh

我有一个触发器,它使用逗号值接收名为 @PackageCode 的参数。现在我想将其值分开并将其保存在表格中。

以下是我迄今为止尝试过的SQLtrigger代码。

CREATE TRIGGER CustomerPackageSplit ON BM_CustomerInfo
FOR INSERT
AS
    declare @CustNIC int;
    declare @CustID varchar(100);
    declare @CustName decimal(10,2);
    declare @PackageCode varchar(100);

SELECT @CustNIC = i.CustNIC from inserted i;
SELECT @CustID = i.CustID from inserted i;
SELECT @CustName = i.CustName from inserted i;
SELECT @PackageCode = i.Package from inserted i;


INSERT INTO BM_CustPackage (CustNIC,CustID,CustName,PackageCode)
VALUES (@CustNIC,@CustID,@CustName,@PackageCode)

GO

1 个答案:

答案 0 :(得分:1)

SQL Server 2016 中,您可以使用string_split功能(更多信息here)。

这是一个简单的查询,用于分割逗号分隔值:

declare @parameter   varchar(100)

set @parameter = 'abc,xyz,fgh'

select 1 as column1, [value] as column2 
from string_split(@parameter, ',')

此命令的输出为:

╔═════════╦═════════╗
║ column1 ║ column2 ║
╠═════════╬═════════╣
║       1 ║ abc     ║
║       1 ║ xyz     ║
║       1 ║ fgh     ║
╚═════════╩═════════╝

对于较旧的SQL Server版本,您可以找到许多自定义分割函数的实现,例如hereherehere