Sql server 插入字符串';将每个值合并到一列中
在这里,我想将完整的字符串每个值插入到一列中。为此,我编写了以下脚本: 示例:Sql server 插入字符串';将每个值合并到一列中,sql-server,sql-server-2008-r2,Sql Server,Sql Server 2008 R2,在这里,我想将完整的字符串每个值插入到一列中。为此,我编写了以下脚本: 示例: EXEC sptest @cola = 'X1', @colb = 'M1,M2,M3,M4', @colc = 'Z1' 表:测试 create table test ( cola varchar(10), colb varchar(max), colc varchar(10) ); 注意:现在我想通过调用存储过程插入如下记录: cola colb colc ------------------ X1
EXEC sptest
@cola = 'X1',
@colb = 'M1,M2,M3,M4',
@colc = 'Z1'
表:测试
create table test
(
cola varchar(10),
colb varchar(max),
colc varchar(10)
);
注意:现在我想通过调用存储过程插入如下记录:
cola colb colc
------------------
X1 M1 Z1
X1 M2 Z1
X1 M3 Z1
X1 M4 Z1
存储过程:sptest
CREATE PROC sptest
@cola varchar(10),
@colb varchar(max),
@colc varchar(10)
AS
Declare @dynamic varchar(max)
SET @dynamic =N'delete from test where colc='''+ @colc +'''';
PRINT(@dynamic)
EXEC(@dynamic)
SET @dynamic =N'insert into test values('''+@cola+''','''+@colb+''','''+@colc+''')';
PRINT(@dynamic)
EXEC(@dynamic)
GO
注意:首先我需要通过检查colc
值来删除记录,然后插入记录
调用函数:
EXEC sptest
@cola = 'X1',
@colb = 'M1,M2,M3,M4',
@colc = 'Z1'
注意:在如上所示的调用函数中,必须按上表所示插入
colb
值。我不知道如何在列colb
中插入完整的字符串。SQL没有任何机制可以自动将逗号分隔的值字符串(您的@colb
-变量)拆分为多个插入项。您需要编写一些代码来进行拆分
基本上,您应该这样做:
CHARINDEX
确定@colb
中下一个,
的位置。将此位置存储在变量中子字符串
仅检索@colb
中存储到(1)中位置的字符@cola
、@colc
和(2)中提取的值调用INSERT
,
问题没有多大意义…@MitchWheat,请检查更新。为什么要使用dynamic?根本不需要基于您发布的内容使用dynamic sql。这不仅是不必要的,而且会使您的过程容易受到sql注入的攻击。您还应该始终在insert语句中命名列。