Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 поиск неправильной строки при переводе varchar во float  [new]
нуб987
Guest
при импорте данных из екселевского файла в таблицу, вылезает ошибка: "Error converting data type nvarchar to float."
т.е. понятно, что в каком-то из числовых полей екселя либо стоит запятая вместо точки, либо разделительный пробел между тысячами.
Ошибок может быть много и к тому же самых неожиданных (пока не наберешься достаточного опыта в их предотвращении).
Подскажите, как можно определить строку, в которой произошла ошибка?
16 сен 13, 22:49    [14847121]     Ответить | Цитировать Сообщить модератору
 Re: поиск неправильной строки при переводе varchar во float  [new]
KRS544
Member

Откуда:
Сообщений: 497
перегнать как nvarchar, а потом использовать функцию isnumeric
16 сен 13, 23:26    [14847181]     Ответить | Цитировать Сообщить модератору
 Re: поиск неправильной строки при переводе varchar во float  [new]
нуб987
Guest
isnumeric не вариант, т.к. выдает 1, если строку возможно преобразовать в один из числовых форматов. Т.е., что данное число можно перевести именно во float, никто не гарантирует.
ПС. если честно, я вообще не понимаю смысла этой функции. Что она дает-то? Где ее использовать можно? Но это оффтоп вроде.
17 сен 13, 00:04    [14847233]     Ответить | Цитировать Сообщить модератору
 Re: поиск неправильной строки при переводе varchar во float  [new]
qwerty112
Guest
нуб987,

сервер-то какой ? а то какбэ выход есть
и как импорт выполняется ? это SISS или openrowset какой-нибудь... что ?
17 сен 13, 00:11    [14847240]     Ответить | Цитировать Сообщить модератору
 Re: поиск неправильной строки при переводе varchar во float  [new]
нуб987
Guest
qwerty112, MSSQL 2000
импорт выполняется как-то так:
select
replace(replace(Field1, ',', '.'), char(160), '') as Field1, 
replace(replace(Field2, ',', '.'), char(160), '') as Field2,
replace(replace(Field3, ',', '.'), char(160), '') as Field3

FROM OPENROWSET('Microsoft.Jet.OLEDB.4.0',
'Excel 8.0;Database=<имя файла.xls>;IMEX=1;HDR=yes', [Лист1$])
17 сен 13, 00:19    [14847252]     Ответить | Цитировать Сообщить модератору
 Re: поиск неправильной строки при переводе varchar во float  [new]
qwerty112
Guest
нуб987,

в таком духе - 7026048 должна быть проверка
17 сен 13, 00:31    [14847256]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить