在更新查询中键入转换

时间:2014-08-06 15:37:50

标签: sql-server stored-procedures sql-update

我的存储过程中有以下查询。

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时出错

我该如何解决这个问题?

1 个答案:

答案 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