【发布时间】:2018-01-23 10:26:10
【问题描述】:
我有一个带值的字符串:
@value = 'e65.89,f34.yy,sw21.67,aqw21,g45.g4'
我需要将此字符串作为单独的行插入到临时表中。
喜欢:
VALUES
e65.89
f34.yy
sw21.67
aqw21
g45.g4
我试过这段代码,它适用于整数值,但是当给定浮点或 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'.
【问题讨论】:
-
从 SQL Server 2016 开始有
STRING_SPLIT。对于较低版本,您会在这里找到大量示例... -
你需要引用字符串。您无法插入值
(e65.89,f34.yy,sw21.67,aqw21,g45.g4)... 相反,您需要插入值('e65.89','f34.yy','sw21.67','aqw21','g45.g4') -
关于链接问题的一个提示:这是相当古老的,答案也是如此。对它们进行排序并搜索较新的值是个好主意...如果您只需将值用引号
'e65.89'括起来,您自己的代码就可以工作。 -
@Shnugo 但我在网上找不到答案
-
我觉得我昨天或周日看到了这个确切的问题,但该帖子已被删除。
标签: sql sql-server sql-insert