Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 MSSQL2008R2 найти строки в формате 2.6251e+013  [new]
philips
Member

Откуда:
Сообщений: 365
При закачке из Excel получились данные в таком формате. Остальные нормальными цифрами. Как из выделить?
24 дек 14, 10:31    [17044213]     Ответить | Цитировать Сообщить модератору
 Re: MSSQL2008R2 найти строки в формате 2.6251e+013  [new]
xenix
Guest
SELECT * FROM TABLEA A WHERE A.COLUMNVAL LIKE '%E+%
24 дек 14, 10:46    [17044322]     Ответить | Цитировать Сообщить модератору
 Re: MSSQL2008R2 найти строки в формате 2.6251e+013  [new]
philips
Member

Откуда:
Сообщений: 365
Все оказалось гораздо хуже. При Update столбец float преобразовывался в varchar(20) в формате 1+ e013. Я в шоке
24 дек 14, 11:18    [17044506]     Ответить | Цитировать Сообщить модератору
 Re: MSSQL2008R2 найти строки в формате 2.6251e+013  [new]
Glory
Member

Откуда:
Сообщений: 104751
philips
столбец float преобразовывался в varchar(20) в формате 1+ e013. Я в шоке

А что в excel уже появилось жесткое типизирование по столбцам ?
24 дек 14, 13:09    [17045384]     Ответить | Цитировать Сообщить модератору
 Re: MSSQL2008R2 найти строки в формате 2.6251e+013  [new]
Владислав Колосов
Member

Откуда:
Сообщений: 8485
Надо просто колонки растянуть.
24 дек 14, 13:21    [17045483]     Ответить | Цитировать Сообщить модератору
 Re: MSSQL2008R2 найти строки в формате 2.6251e+013  [new]
philips
Member

Откуда:
Сообщений: 365
Да нет это было Update . Excel все правильно заполнил кроме типа Float. Сбой как раз был в SQL . Из- за этого я положил таблицу с банковскими счетами. До сих пор в шоке - надо запомнить на будущее такой казус. Самое страшное , что это видно только после Update, а в перварительном Select то тому же запросу все впорядке
24 дек 14, 13:28    [17045552]     Ответить | Цитировать Сообщить модератору
 Re: MSSQL2008R2 найти строки в формате 2.6251e+013  [new]
Glory
Member

Откуда:
Сообщений: 104751
philips
Сбой как раз был в SQL .

И что это за "сбой" ?

philips
До сих пор в шоке - надо запомнить на будущее такой казус.

Тип _столбца_ определяется не по случайному значению где-то в середине файла
24 дек 14, 13:31    [17045587]     Ответить | Цитировать Сообщить модератору
 Re: MSSQL2008R2 найти строки в формате 2.6251e+013  [new]
iap
Member

Откуда: Москва
Сообщений: 47063
philips,

с какой целью Вы вообще используете тип FLOAT в SQL Server?
24 дек 14, 13:32    [17045597]     Ответить | Цитировать Сообщить модератору
 Re: MSSQL2008R2 найти строки в формате 2.6251e+013  [new]
Shakill
Member

Откуда: мск
Сообщений: 1882
philips
Сбой как раз был в SQL . Из- за этого я положил таблицу с банковскими счетами. До сих пор в шоке - надо запомнить на будущее такой казус.
а лучше читать справку по конвертации типов.
Data Type Conversion (Database Engine)
When you want to convert from float or real to character data, using the STR string function is usually more useful than CAST( ). This is because STR enables more control over formatting
CAST and CONVERT
float and real Styles. 0 (default)
A maximum of 6 digits. Use in scientific notation, when appropriate.
у вас как раз неявное преобразование из float в varchar без использования STR, вот и получаете экспоненциальную запись
24 дек 14, 13:47    [17045699]     Ответить | Цитировать Сообщить модератору
 Re: MSSQL2008R2 найти строки в формате 2.6251e+013  [new]
philips
Member

Откуда:
Сообщений: 365
Shakill
[а лучше читать справку по конвертации типов.
Data Type Conversion (Database Engine)
When you want to convert from float or real to character data, using the STR string function is usually more useful than CAST( ). This is because STR enables more control over formatting
CAST and CONVERT
float and real Styles. 0 (default)
A maximum of 6 digits. Use in scientific notation, when appropriate.
у вас как раз неявное преобразование из float в varchar без использования STR, вот и получаете экспоненциальную запись

А за это большое спасибо. Честно никогда до этого не доходил
24 дек 14, 13:54    [17045758]     Ответить | Цитировать Сообщить модератору
 Re: MSSQL2008R2 найти строки в формате 2.6251e+013  [new]
гр комп
Guest
philips
Все оказалось гораздо хуже. При Update столбец float преобразовывался в varchar(20) в формате 1+ e013. Я в шоке

Я в таких случаях перед закачкой таких временных таблиц в самом экселе всякие такие столбцы типа лицевых счетов перевожу в текстовый вид добавлением апострофа в начале.
А дальше сам SQL Server при импорте из экселя это поле определяет как nvarchar (255).
24 дек 14, 15:01    [17046359]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить