我正在尝试加入两个表格。
Table1.Column1,其中第1列是BIGInt。 上 Table2.Column2,其中第2列是Nvarchar。
这是我正在运行的
Select HspId, CMSid, Cast(CMSId as nvarchar)
From Q2IMSSiteHistory2015old
inner Join HSP on HSP.CMSid = Q2IMSSiteHistory2015old.POS
我收到以下错误:将数据类型nvarchar转换为bigint时出错。
即使我没有投出任何东西,我也会得到同样的错误。
答案 0 :(得分:0)
首先,在SQL Server中始终使用varchar
的长度。
其次,select
中的转换对on
没有影响,因此您需要转换两次。
也许你打算:
Select HspId, CMSid, Cast(CMSId as nvarchar(255))
From Q2IMSSiteHistory2015old inner Join
HSP
on Cast(HSP.CMSId as nvarchar(255)) = Q2IMSSiteHistory2015old.POS;
通常,我建议您使用try_convert()
。但是,转换为字符串非常安全,因此您可以确信它可以正常工作。
答案 1 :(得分:0)
SQL Server尝试将nvarchar
隐式转换为bigint
。
如果您的bigint
列包含无法转换为nvarchar
的值,则您需要明确地将nvarchar
转换为bigint
以避免例外:
Select HspId, CMSid, Cast(CMSId as nvarchar(20))
From Q2IMSSiteHistory2015old
inner Join HSP on Cast(HSP.CMSid as nvarchar(20)) = Q2IMSSiteHistory2015old.POS
此外,当您转换为任何字符串值(char,varchar,nchar或nvarchar)时,应始终指定字符串的最大长度。 SQL Server有default length of 30,在这种情况下应该足够了,但是最好的做法总是指定长度。
答案 2 :(得分:0)
施放联接。
B