将逗号分隔的float和varchar字符串插入临时表

时间:2018-01-23 10:26:10

标签: sql sql-server sql-insert

我有一个包含值的字符串:

 @value = 'e65.89,f34.yy,sw21.67,aqw21,g45.g4'

我需要将此字符串作为单独的行插入临时表中。

像:

     VALUES
     e65.89
     f34.yy
     sw21.67 
     aqw21
     g45.g4

我尝试了这段代码,它可以使用整数值,但是当给出float或varchar值时,它会显示错误:

CREATE TABLE #Temp (SNo INT IDENTITY(1,1),Code VARCHAR(max))

     Declare @value varchar(max)
     set @value = 'e65.89,f34.yy,sw21.67,aqw21,g45.g4'
    DECLARE @InsertStatement varchar(max) = 'insert into #Temp values ('+REPLACE(@value ,',','),(')+');';
    EXEC (@InsertStatement);

    SELECT * FROM #Temp;

错误:

Msg 102, Level 15, State 1, Line 1
Incorrect syntax near 'e'.

1 个答案:

答案 0 :(得分:0)

尝试使用''(单引号)

包装要插入的值
CREATE TABLE #Temp (SNo INT IDENTITY(1,1),Code VARCHAR(max))

Declare @value varchar(max)
set @value = 'e65.89,f34.yy,sw21.67,aqw21,g45.g4'
DECLARE @InsertStatement varchar(max) = 'insert into #Temp values (''' + 
REPLACE(@value ,',','''),(''')+ '''' + ');';
EXEC (@InsertStatement);

SELECT * FROM #Temp;