您好我已经通过Import and Export wizard
将数据从Excel导入到我的SQL数据库2008.导入时,某些列被检测为nvarchar
,其中一些列为float
。我成功导入了所有数据。
现在我想将这些数据复制到另一个表中,以便查询:
INSERT INTO dbo.klient
(name, surname,rodcis,nopass,street,zip,city,appendix,tel,fax,titul,akce,rocnik)
SELECT [nameorig], [surnameorig],[rodcisorig],[nopassorig],[adresa],[zip],[city],[apporig],[telhomeorig],[telworkorig],titul,'000000-00',2014
FROM dbo.UCAST3$
E.g。列rodcisorig
包含以下值:
7102112688
500722142
515524172
当我尝试将它们复制到float
列时检测为varchar
的那些列我从上面提到的单元格中得到这样的值:
5.25317e+009
6.15131e+009
有人会帮我解决这个问题吗?
答案 0 :(得分:1)
将这些列类型从float更改为decimal。那你就不会有科学记数法问题了。十进制以您希望的方式转换为varchar。
如果您无法将列从float更改为decimal,请执行以下操作:
select cast(cast(YourValue as decimal) as varchar)
这会暂时将您的浮动转换为十进制,然后再将其转换为varchar,避免问题。
答案 1 :(得分:1)
测试数据
DECLARE @t TABLE (VALUE FLOAT)
INSERT INTO @t VALUES (7102112688468486),(58468484600722142),(5684684615524172)
SELECT * FROM @t
╔══════════════════════╗
║ VALUE ║
╠══════════════════════╣
║ 7.10211268846849E+15 ║
║ 5.84684846007221E+16 ║
║ 5.68468461552417E+15 ║
╚══════════════════════╝
<强>查询强>
SELECT CAST(VALUE AS NUMERIC(38,2)) Vals
FROM @t
最终结果
╔══════════════════════╗
║ Vals ║
╠══════════════════════╣
║ 7102112688468486.00 ║
║ 58468484600722144.00 ║
║ 5684684615524172.00 ║
╚══════════════════════╝
转换为Varhcar
SELECT CAST(CAST(VALUE AS NUMERIC(38,0)) AS VARCHAR(1000)) Vals
FROM @t
╔═══════════════════╗
║ Vals ║
╠═══════════════════╣
║ 7102112688468486 ║
║ 58468484600722144 ║
║ 5684684615524172 ║
╚═══════════════════╝