我的存储过程中有以下查询。
UPDATE Role_Tag_Imp
SET Tag_id =
(SELECT Tag_id
FROM Tag
WHERE Tag.Name = Role_Tag_Imp.Tag_Name)
此Tag_id
表中的Role_Tag_Imp
类型为bigint
,其中Tag_id
表中的Tag
类型为nvarchar
。
在运行存储过程时,它会给我一个错误
将数据类型nvarchar转换为bigint时出错
我该如何解决这个问题?
答案 0 :(得分:1)
如果您使用的是SQL Server 2012或更高版本(不是Management Studio,因为您可以从SSMS 2012连接到2008R2等人的DB),您可以按如下方式利用TRY_PARSE函数:
UPDATE Role_Tag_Imp
SET Tag_id =
(SELECT TRY_PARSE(Tag_id AS BIGINT)
FROM Tag
WHERE Tag.Name = Role_Tag_Imp.Tag_Name)
我相信如果该函数无法解析/转换该值,则该函数将返回NULL。
此处的文档: http://msdn.microsoft.com/en-us/library/hh213126(v=sql.110).aspx