日期:2014-05-19  浏览次数:20459 次

SQL SEVER中无法存储8.00这样的数据,请问怎么处理!
问题是这样的:

SQL中将8.00   存储起来就成为了   8

系统查询结果为   8   我想得到8.00   怎么办?

一般来说   像:   8.01   这些可以得到!

因为使用delphi   的控件直接显示数据需要   显示8.00   请问怎么办?

------解决方案--------------------
Why not?

declare @t table(num numeric(5,2))
insert into @t select 8

select * from @t

/*
num
-------
8.00
*/
------解决方案--------------------
对于整型数据,可以用函数强制转换其类型:

select rtrim(cast(8 as numeric(5,2))) as num
------解决方案--------------------
select str(12.3,10,2)-- 12.30 --10是整个的宽度,2是小数点后的位数
------解决方案--------------------
数据类型不对吧

------解决方案--------------------
ls:应该加上ltrim
select ltrim(str(12.3,10,2))
------解决方案--------------------
但是: 使用delphi 的控件直接显示数据需要 显示8.00 请问怎么办?
-------------------------------------------------
如果是控件本身的问题,最无奈的选择就是将所有的数据转换为字符类型,保留两位小数位,如:

select rtrim(cast(8 as numeric(5,2))) as num
------解决方案--------------------
楼主应该在客户端程序上设置格式
转成字符型再在客户端上显示,并不是好办法.
------解决方案--------------------
还没解决,请问什么控件
------解决方案--------------------
使用delphi 的控件直接显示数据需要 显示8.00 请问怎么办?

这与数据库没有多大关系的,程序端显示问题。看看 delphi的控件有没有format or outformat属性来格式化显示结果。

------解决方案--------------------
在数据库里获取出来就是8.00不就成了
------解决方案--------------------
绑定数据源也不会有问题啊
------解决方案--------------------
怎么会没问题,试试先
------解决方案--------------------
在表中,定义该栏位的数据类型为numeric(x,y) y为小数位数
------解决方案--------------------
SQL中将8.00 存储起来就成为了 8

------------------------------
你的数据类型定义的有问题

其他的楼上说的比我知道的还清楚
------解决方案--------------------
借LZ地盘问一个问题:
select cast(0 as numeric(5,2)) as num 显示:.00
select rtrim(cast(0 as numeric(5,2))) as num 显示:0.00

原因是为什么呢?多谢解答

------解决方案--------------------
select cast(.00 as varchar(10))--只知道数字转字符会在个位上把0补上
------解决方案--------------------
数据类型不对吧
------解决方案--------------------
Mark!
------解决方案--------------------
如果是在DELPHI中,
一个方法是,在dataset 中增加列设置,在列属性中设置displayformat,

或则使用其他控件,比如dbgrideh等,可以直接设置显示模式
------解决方案--------------------
前台處理的問題,delphi本來就可以設置
------解决方案--------------------
如果是在DELPHI中,
一个方法是,在dataset 中增加列设置,在列属性中设置displayformat
------解决方案--------------------