INSERT INTO SELECT - 将2列缩小为一列

时间:2014-01-05 14:00:31

标签: sql sql-server-2008

我正在尝试将两列 - noteappdbo.UCAST3$缩小到列klient.appendix

这就是我尝试使用小注释缩小2列的方法:[note] + ' appendix: ' + [app]

我试过以下:

INSERT INTO dbo.klient
  (name, surname, rodcis, nopass, street, zip, city, appendix, tel, fax, titul, akce, rocnik)
  SELECT 
     [nameorig], [surnameorig], [rodcisorig], [nopassorig], [adresa], [ZIP], [place],
     [note] + ' appendix: ' + [app], [telhome], [telwork], titul, '000000-00', 2014 
  FROM dbo.UCAST3$

我收到以下错误:

  

将数据类型varchar转换为数字时出错。

它似乎正在跳到下一列nopassorig,它是数字。

任何人都可以帮我解决这个问题吗?

  • [note]decimal(30,0)
  • [app]nvarchar(255)

2 个答案:

答案 0 :(得分:3)

从不,永远不会在一列中存储多个值!

请不要这样做。如果你想在SQL中再次分离这些值,这将是一个痛苦而且缓慢。

只需将SQL select语句中的值汇总到您需要的位置即可。

答案 1 :(得分:1)

您需要将[note]转换为varchar才能成功连接。

INSERT INTO dbo.klient
(name, surname,rodcis,nopass,street,zip,city,appendix,tel,fax,titul,akce,rocnik)
SELECT [nameorig], [surnameorig],[rodcisorig],
       [nopassorig],[adresa],[ZIP],[place],
       CAST([note] as VARCHAR(30)) + ' appendix: ' + [app],
       [telhome],[telwork],titul,'000000-00',2014
 FROM dbo.UCAST3$