Sql 插入到选择中-一次收缩两列

Sql 插入到选择中-一次收缩两列,sql,sql-server-2008,Sql,Sql Server 2008,我正试图将两列-note和app从dbo.UCAST3$-压缩到klient.appendix中 这就是我如何用小注释缩小两列:[note]+'附录:'+[app] 我尝试了以下几点: INSERT INTO dbo.klient (name, surname, rodcis, nopass, street, zip, city, appendix, tel, fax, titul, akce, rocnik) SELECT [nameorig], [surnameorig]

我正试图将两列-
note
app
dbo.UCAST3$
-压缩到
klient.appendix中

这就是我如何用小注释缩小两列:
[note]+'附录:'+[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
,这是一个数字

谁能帮我解决这个问题

  • [注意]
    十进制(30,0)
  • [app]
    nvarchar(255)
决不,决不,决不在一列中存储多个值! 请不要这样做。如果您想在SQL中再次分离这些值,这将是一个痛苦而缓慢的过程

只要在SQL select语句中指定您需要的值即可。

Never,Never,Never,Never在一列中存储多个值! 请不要这样做。如果您想在SQL中再次分离这些值,这将是一个痛苦而缓慢的过程


只要在SQL select语句中指定需要的值即可。

您需要将[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$

您需要将[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$

答案取决于您的数据库引擎和三列的数据类型。您好,感谢您的帮助:
[note]是十进制(30,0)[app]是nvarchar(255)
和SQL Server 2008答案取决于您的数据库引擎和三列的数据类型。您好,感谢您的帮助:
[note]是十进制(30,0)[app]是nvarchar(255)
和SQL Server2008@marc_sno marc sir我不知道CASE语句中的默认长度,在数据定义中为1,在CAST和convert函数中为30。@marc_s no marc sir我不知道CASE语句中的默认长度,在数据定义中为1,在CAST和convert函数中为30。