Как устранить ошибку при преобразовании типа данных varchar во float - PullRequest
0 голосов
/ 16 января 2019

Я изменяю хранимую процедуру и затем выполняю ее. По сути, речь идет о вставке таблицы ежемесячных требований (которую я импортировал, и все переменные VARCHAR(MAX)) в существующую большую таблицу с предыдущими историческими данными.

В первую очередь хранимая процедура выполняет изменение типов данных для всех переменных в соответствии с существующими типами данных переменных больших таблиц. По большей части я смог запустить хранимую процедуру и обновить большую таблицу. Для одного из файлов при запуске процедуры выдается следующая ошибка:

Сообщение 8114, Уровень 16, Состояние 5, Процедура InsertClaimsData, Строка 10 [Стартовая Строка 8] Ошибка преобразования типа данных varchar в float

Я не могу определить, какая именно переменная вызывает эту проблему, поскольку существует более 10 переменных, в которых первоначальный разработчик этого кода использовал код преобразования следующего типа:

CASE WHEN ISNUMERIC([INSURED ZIP]) = 1 THEN CAST([INSURED ZIP] AS FLOAT) ELSE 0 END
,CASE WHEN ISNUMERIC([BILLING PROVIDER TAX ID]) = 1 THEN CAST([BILLING PROVIDER TAX ID] AS FLOAT) ELSE 0 END

Выше приведен небольшой фрагмент кода.

Есть ли лучший способ написания этого кода, чтобы в случае наличия неверных данных он игнорировал их и не выдавал ошибку? Или любой способ узнать, какая переменная или записи ответственны за эту ошибку, и я могу тогда это исправить?

Я использую SSMS 17

1 Ответ

0 голосов
/ 16 января 2019

ISNUMERIC вернет true для значений, которые являются своего рода числовыми, но не совсем, так что это может быть не совсем идеально.Есть много примеров того, где это вызывает проблемы, если вы просматриваете немного. Этот ответ предоставляет некоторый пример этого.

Вы можете использовать TRY_PARSE () или TRY_CAST () в качестве альтернативы и посмотреть, поможет ли этоисправьте вашу проблему.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...