SQL Server: как я могу скопировать данные из одной таблицы в другую без добавления символов 'e +' к результатам - PullRequest
2 голосов
/ 01 сентября 2011

Я копирую данные из таблицы, созданной при импорте электронных таблиц Excel.

Вот что я делаю, чтобы переместить данные из таблицы импорта в фактическую таблицу:

INSERT INTO TableName ([Column1], [Column2])
SELECT [Column1], [Column2] FROM [Sheet1$] 

После того, как я выполню это в столбце 1, я получаю записи типа:

5.31752e+007, когда фактическое значение этой записи (из таблицы, из которой я импортирую) равно 5046610163

Любые идеи

Ответы [ 2 ]

3 голосов
/ 01 сентября 2011

Вы не указали, является ли это столбец1 или столбец2, в котором содержатся данные с плавающей точкой, но вот пример, предполагающий, что вам нужен столбец 1.

INSERT INTO TableName ([Column1], [Column2])
SELECT CAST([Column1] AS decimal(38,2)), [Column2] FROM [Sheet1$] 

Я использую тот же код для преобразования вvarchar без всего этого форматирования довольно часто:

SELECT CONVERT(varchar(100), CAST(@value as decimal(38,2)))
0 голосов
/ 01 сентября 2011
INSERT INTO TableName ([Column1], [Column2])
    SELECT UPPER([Column1]), [Column2] 
    FROM [Sheet1$] 

РЕДАКТИРОВАТЬ

ОК - затем попробуйте сначала открыть свой лист Excel, создать 3-й столбец и сделать его формулой (= UPPER (A1)), гдеА1 - это фактически тот столбец, с которым у вас возникли проблемы.

Кроме того, если вы будете искать «научную запись» в справке Excel, вы также получите некоторые ограниченные советы.

РЕДАКТИРОВАТЬ 2

Или попробуйте это в TSQL:

INSERT INTO TableName ([Column1], [Column2])
select LTRIM(str(cast([Column1] as real))), [Column2]
FROM [Sheet1$] 
...