我需要使用两个字符串的串联来更新数据库中的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'
答案 0 :(得分:1)
尝试删除该行...
insert into @p1 values(N'Account Number',N'Account Type')
这些不会转换为BIGINT
。
即使值为NULL
,它仍然可以,因为CONCAT
会忽略它,即......
CONCAT(NULL,'111')
会111
。