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
------解决方案--------------------