В моем Excel некоторые значения похожи на
11.17
3.35
2.28
1.4
, хранящиеся в типе General
.
После импорта Excel в базу данных некоторые значения после десятичных знаков полностью меняются.
Пример
SELECT * into #temp
FROM OPENROWSET('Microsoft.ACE.OLEDB.12.0',
'Excel 12.0;IMEX=1;Database=D:\test\testfile.xlsx',
[Data$])
данные из #temp
будут вставлены в таблицу назначения с типом данных decimal(38,20)
.
11.17 is changed to 11.17000000000000000000
3.35 is changed to 3.35000000000000010000
2.28 is changed to 2.27999999999999980000--wrong
1.4 is changed to 1.39999999999999990000--wrong
после проверки я обнаружил, что тип данных столбца в #temp
равен float
, что вызывает эту проблему как приблизительный тип данных.
Есть ли способ избежать сохраненияон в float?
Я знаю, что мы можем использовать опцию BULK
с файлом fmt
, но число столбцов в excel не является статическим, поэтому я не могу использовать эту опцию.