了解SQL抛出转换错误

问题描述 投票:0回答:1

我有一个SQL Server代理作业,该作业偶尔会失败,并向int抛出转换错误varchar。

最疯狂的部分是在抛出错误后,我运行了相同的代码,它运行正常。

然后重新运行该作业即可正常运行。但是,几天后,这种情况再次发生(该作业安排为每天运行)。请,有人可以帮助我了解为什么会发生这种情况以及如何解决?

我正在使用SQL Server 2017数据类型:Col1 = char(6),Col2 = varchar(25),Col3 = char(15),col4 = char(6),lev1 = char(6)

SELECT 
    col1, col2,
    REPLACE(col3,'_','') AS col3
FROM 
    TableName
WHERE 
    col4 IN (SELECT DISTINCT lev1 
             FROM viewName WITH (NOLOCK))

UNION ALL

SELECT 
    0, 'Unassigned', 0
sql-server sql-job
1个回答
2
投票

col1col3被定义为字符数据类型,但是在并集的第二选择中,您具有硬编码的整数。请尝试制作这些字符串。

SELECT 
    col1, col2,
    REPLACE(col3,'_','') AS col3
FROM 
    TableName
WHERE 
    col4 IN (SELECT DISTINCT lev1 
             FROM viewName WITH (NOLOCK))

UNION ALL

SELECT 
    '0', 'Unassigned', '0'
© www.soinside.com 2019 - 2024. All rights reserved.