有SQL Server的另一种解决方案

时间:2019-03-28 15:08:47

标签: sql-server

我有一个小问题:

SELECT *
FROM  ZGA_DASHBOARD_FINAL
full outer join A_SGA_Name_ID_Final ON cast(REFERENCE_KEY1 as integer) =A_SGA_Name_ID_Final.[PERSONID_EXT]
WHERE ISNUMERIC(REFERENCE_KEY1) = 1 

对于我的输出,我遇到此错误:将varchar值“ CORRECT”转换为数据类型int时,转换失败。

,当我通过内部联接更改完全外部联接时,它会起作用 有人有同样的问题。 预先感谢

1 个答案:

答案 0 :(得分:0)

您可以使用CTE首先限制ISNUMERIC返回true的记录:

; WITH NumericReference
AS (
    SELECT *
    FROM  ZGA_DASHBOARD_FINAL
    WHERE ISNUMERIC(REFERENCE_KEY1) = 1
    )
    SELECT *
    FROM  [NumericReference] nr
    FULL OUTER JOIN A_SGA_Name_ID_Final af 
        ON CAST(nr.REFERENCE_KEY1 AS INTEGER) = af.[PERSONID_EXT]