Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 Как найти значение, на котором возникает ошибка преобразования типа, или его пропустить?  [new]
Борис Гаркун
Member

Откуда: Лермонтов
Сообщений: 221
Здравствуйте!

При исполнении SQL запроса, если добавить в его секцию WHERE строку
CONVERT(Decimal, u.Мощность) <> c.N_Cap2

возвращается ошибка
автор
Ошибка при преобразовании типа данных varchar к numeric

Как узнать, на какой строке спотыкается преобразование либо отсеять эти строки?
В секции WHERE есть еще такие фильтры:
u.Мощность IS NOT NULL AND u.Мощность <> '' AND u.Мощность <> '-' 
AND u.Мощность LIKE '[0123456789]%'

, но они не отлавливают некорректное значение
29 окт 19, 10:31    [22004806]     Ответить | Цитировать Сообщить модератору
 Re: Как найти значение, на котором возникает ошибка преобразования типа, или его пропустить?  [new]
TaPaK
Member

Откуда: Kiev
Сообщений: 6801
Борис Гаркун,

TRY_CAST/TRY_CONVERT
29 окт 19, 10:33    [22004811]     Ответить | Цитировать Сообщить модератору
 Re: Как найти значение, на котором возникает ошибка преобразования типа, или его пропустить?  [new]
iap
Member

Откуда: Москва
Сообщений: 46983
Борис Гаркун
В секции WHERE есть еще такие фильтры:
u.Мощность IS NOT NULL AND u.Мощность <> '' AND u.Мощность <> '-' 
AND u.Мощность LIKE '[0123456789]%'
Достаточно оставить только LIKE.
Остальное в этом случае будет лишним.
Потому что если первый символ обязательно цифра,
то автоматически эта строка не пуста, первый символ не минус и она не NULL.
29 окт 19, 11:04    [22004841]     Ответить | Цитировать Сообщить модератору
 Re: Как найти значение, на котором возникает ошибка преобразования типа, или его пропустить?  [new]
Владислав Колосов
Member

Откуда:
Сообщений: 7780
Борис Гаркун,

NOT LIKE '%[^0-9]%'

но это никак не поможет, если фильтр convert будет применён раньше фильтра like. Лучше использовать try_cast/try_convert.
29 окт 19, 12:40    [22004940]     Ответить | Цитировать Сообщить модератору
 Re: Как найти значение, на котором возникает ошибка преобразования типа, или его пропустить?  [new]
fkthat
Member

Откуда:
Сообщений: 3039
Если сиквел 2016 или новее, то: TRY_CONVERT().
29 окт 19, 13:18    [22004980]     Ответить | Цитировать Сообщить модератору
 Re: Как найти значение, на котором возникает ошибка преобразования типа, или его пропустить?  [new]
TaPaK
Member

Откуда: Kiev
Сообщений: 6801
fkthat
Если сиквел 2016 или новее, то: TRY_CONVERT().

2012 вроде
29 окт 19, 13:23    [22004985]     Ответить | Цитировать Сообщить модератору
 Re: Как найти значение, на котором возникает ошибка преобразования типа, или его пропустить?  [new]
iap
Member

Откуда: Москва
Сообщений: 46983
TaPaK
fkthat
Если сиквел 2016 или новее, то: TRY_CONVERT().

2012 вроде
ошибка при конвертации
29 окт 19, 14:08    [22005039]     Ответить | Цитировать Сообщить модератору
 Re: Как найти значение, на котором возникает ошибка преобразования типа, или его пропустить?  [new]
Борис Гаркун
Member

Откуда: Лермонтов
Сообщений: 221
TaPaK, спасибо!
29 окт 19, 14:51    [22005123]     Ответить | Цитировать Сообщить модератору
 Re: Как найти значение, на котором возникает ошибка преобразования типа, или его пропустить?  [new]
Борис Гаркун
Member

Откуда: Лермонтов
Сообщений: 221
и всем спасибо :)
29 окт 19, 14:54    [22005132]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить