SELECT * FROM T1 INNER JOIN T2 ON CONVERT(INT,T1.DeviceID)=T2.LogicalDeviceId
LogicalDeviceId
在 int 中,而{{11}}在 string
错误:将nvarchar值“ NA”转换为时,转换失败 数据类型为int。
谢谢。
答案 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);