• 博客园logo
  • 会员
  • 众包
  • 新闻
  • 博问
  • 闪存
  • 赞助商
  • HarmonyOS
  • Chat2DB
    • 搜索
      所有博客
    • 搜索
      当前博客
  • 写随笔 我的博客 短消息 简洁模式
    用户头像
    我的博客 我的园子 账号设置 会员中心 简洁模式 ... 退出登录
    注册 登录
PowerCoder
博客园    首页    新随笔    联系   管理    订阅  订阅

Sql server 的float和real类型会产生科学计数法,如何消除科学计数法

sqlserver 查询的 float 类型 如果是0.00000000001的话,会被显示为1E-11,请问怎么才能让查询出的结果显示为正常显示方式而不是科学计数法?

 

答案:

float 和 real 用于表示浮点数字数据的近似数字数据类型。浮点数据为近似值;并非数据类型范围内的所有数据都能精确地表示。

解决float科学计数的问题只能靠转换,decimal(12,11)会自动补全到小数点后11位。

您可以试试这样转化: 先建一个测试表:

CREATE TABLE dbo.sci_notation 

( num float ) 

INSERT INTO dbo.sci_notation VALUES (0.0000000001)

因为不清楚所有表中float的小数位,所以转换成decimal尽量大点,我选了decimal(38,28),保留28位小数。先转成varchar,然后对varchar进行去0操作。

select replace(rtrim(replace(convert(varchar,cast(num as decimal(38,28))),'0',' ')),' ','0')  from dbo.sci_notation 

----------------------------- 

(No column name) 0.0000000001

-----------------------------

 

posted @ 2018-04-19 15:33  PowerCoder  阅读(7091)  评论(0)    收藏  举报
刷新页面返回顶部
博客园  ©  2004-2025
浙公网安备 33010602011771号 浙ICP备2021040463号-3