在更新期间将数据类型varchar转换为bigint时出错

时间:2014-08-13 13:54:53

标签: sql-server concatenation

我需要使用两个字符串的串联来更新数据库中的bigint值。 SQL不喜欢这个。 DailyArchive.LogicalAccount是一个bigint,@ padding和a.AccountNumber是varchars。

Update dbo.DailyArchive 
SET DailyArchive.LogicalAccount = CONCAT(@padding, a.AccountNumber)
FROM @_AccountList a
JOIN dbo.DailyArchive ON a.AccountNumber = DailyArchive.LogicalAccount

我收到以下错误消息:

  

Msg 8114,Level 16,State 5,Procedure updateNumbers_ArchiveDB,Line   15将数据类型varchar转换为bigint时出错。

我如何执行程序:

declare @p1 dbo.AccountListType
insert into @p1 values(N'Account Number',N'Account Type')
insert into @p1 values(N'7463689',N'Basic')
insert into @p1 values(N'1317893',N'Premium')
insert into @p1 values(N'2806127',N'Basic')

exec updateNumbers_ArchiveDB
@_AccountList=@p1,
@padding=N'111',
@proc_dateStart='2008-01-04 11:24:46',
@proc_dateEnd='2008-01-04 11:24:46'

1 个答案:

答案 0 :(得分:1)

尝试删除该行...

insert into @p1 values(N'Account Number',N'Account Type')

这些不会转换为BIGINT

即使值为NULL,它仍然可以,因为CONCAT会忽略它,即......

CONCAT(NULL,'111')111