字符串逗号分隔插入到 SQL 中的多行
String comma sperated insert into multiple rows in SQL
我有两个带逗号分隔符的字符串,例如 Username = "Adam Hughes, Petro Camp"
和 Email Addresses = "Adam.huges@test.com,petro.camp@test.com"
。
我想插入 1 table 日志历史记录,其中 Username ,Email Address, SourceId,DateStamp
作为 table 中的列。
我想插入 table 一行:Adam Huges Adam.huges@test.com 0 '2016-12-06'
和下一行:Petro Camp petro.camp@test.com 0 '2016-12-06'
.
如何实现?这可以在 C# 中完成并推送到 SQl 数据库吗?
DECLARE @USERNAME VARCHAR(MAX) = 'test1,test2';
DECLARE @EMAILID VARCHAR(MAX) = 'test6,testr3' ;
DECLARE @lenuser INT;
DECLARE @lenemailid INT;
DECLARE @startIndex INT = 0;
declare @indexemail INT = 0;
DECLARE @endIndex INT;
DECLARE @startEmailIndex INT = 0;
DECLARE @endEmailIndex INT;
WHILE @startIndex <= LEN(@USERNAME) AND @startEmailIndex <= LEN(@EMAILID)
BEGIN
SELECT @endIndex = charindex(',',@USERNAME,@startIndex);
SELECT @endEmailIndex = charindex(',',@EMAILID,@startEmailIndex);
if @endIndex = 0
begin
SELECT @endIndex = LEN(@USERNAME);
end
if @endEmailIndex = 0
begin
SELECT @endEmailIndex = LEN(@EMAILID);
end
INSERT INTO dbo.TABLE_1 VALUES(SUBSTRING(@USERNAME,@startIndex,@endIndex), SUBSTRING(@EMAILID,@startEmailIndex,@endEmailIndex));
SELECT @startIndex = @endIndex +1;
SELECT @startEmailIndex = @endEmailIndex +1;
END
这应该 work.But 你可以通过将上面的拆分操作提取到一个函数来删除上面的冗余。只需将 table_1 替换为你的 table 名称并在插入需要的语句
我有两个带逗号分隔符的字符串,例如 Username = "Adam Hughes, Petro Camp"
和 Email Addresses = "Adam.huges@test.com,petro.camp@test.com"
。
我想插入 1 table 日志历史记录,其中 Username ,Email Address, SourceId,DateStamp
作为 table 中的列。
我想插入 table 一行:Adam Huges Adam.huges@test.com 0 '2016-12-06'
和下一行:Petro Camp petro.camp@test.com 0 '2016-12-06'
.
如何实现?这可以在 C# 中完成并推送到 SQl 数据库吗?
DECLARE @USERNAME VARCHAR(MAX) = 'test1,test2';
DECLARE @EMAILID VARCHAR(MAX) = 'test6,testr3' ;
DECLARE @lenuser INT;
DECLARE @lenemailid INT;
DECLARE @startIndex INT = 0;
declare @indexemail INT = 0;
DECLARE @endIndex INT;
DECLARE @startEmailIndex INT = 0;
DECLARE @endEmailIndex INT;
WHILE @startIndex <= LEN(@USERNAME) AND @startEmailIndex <= LEN(@EMAILID)
BEGIN
SELECT @endIndex = charindex(',',@USERNAME,@startIndex);
SELECT @endEmailIndex = charindex(',',@EMAILID,@startEmailIndex);
if @endIndex = 0
begin
SELECT @endIndex = LEN(@USERNAME);
end
if @endEmailIndex = 0
begin
SELECT @endEmailIndex = LEN(@EMAILID);
end
INSERT INTO dbo.TABLE_1 VALUES(SUBSTRING(@USERNAME,@startIndex,@endIndex), SUBSTRING(@EMAILID,@startEmailIndex,@endEmailIndex));
SELECT @startIndex = @endIndex +1;
SELECT @startEmailIndex = @endEmailIndex +1;
END
这应该 work.But 你可以通过将上面的拆分操作提取到一个函数来删除上面的冗余。只需将 table_1 替换为你的 table 名称并在插入需要的语句