在SQL查询中从nvarchar转换为int时转换失败

时间:2019-01-14 13:38:08

标签: sql sql-server stored-procedures

SELECT * FROM T1 INNER JOIN T2 ON CONVERT(INT,T1.DeviceID)=T2.LogicalDeviceId

LogicalDeviceId int 中,而{{11}}在 string

中>
  

错误:将nvarchar值“ NA”转换为时,转换失败   数据类型为int。

谢谢。

1 个答案:

答案 0 :(得分:1)

将“ NA”默认设置为NULL。
NULLIF可以用于此目的。

这在MS Sql Server中有效。

SELECT * 
FROM T1 t1
JOIN T2 t2
  ON t2.LogicalDeviceId = CONVERT(INT, NULLIF(t1.DeviceID, 'NA'));

在MS SQL Server 12+和Azure SQL数据库中,您可以使用TRY_CONVERT
如果转换失败,它将返回NULL而不是错误。

SELECT * 
FROM T1 t1
JOIN T2 t2
  ON t2.LogicalDeviceId = TRY_CONVERT(INT, t1.DeviceID);