我有一个带有逗号的参数。像@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
在 SQL Server 2016 您可以使用string_split
函数(更多信息此处)。
这是一个简单的查询,可以拆分您的逗号分隔值:
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版本,您可以找到许多自定义拆分功能的实现,例如,此处或此处。