Понимание ошибок преобразования SQL - PullRequest
0 голосов
/ 04 октября 2019

У меня есть задание агента SQL Server, которое время от времени завершается с ошибкой и выдает ошибку преобразования varchar в int.

Сумасшедшая часть заключается в том, что после того, как ошибка была выдана и запущена, я запускаю тот же код, он работает нормально.

Затем, если заново выполнить задание, оно работает нормально. Однако через несколько дней это происходит снова (задание планируется выполнять ежедневно). Пожалуйста, кто-нибудь может помочь мне понять, почему это происходит и как это исправить?

Я использую 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

1 Ответ

3 голосов
/ 04 октября 2019

col1 и col3 определены как символьные типы данных, но при втором выборе объединения у вас есть жестко запрограммированные целые числа. Попробуйте вместо этого создать эти строки.

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'
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...