日期:2014-05-17 浏览次数:20529 次
DECLARE @i VARCHAR(20) SET @i = '15.44' SELECT CONVERT(NUMERIC(6,2),CASE WHEN isnumeric(@i) = 1 THEN CONVERT(decimal(18,4),@i) ELSE 0 END*1.0 /10000)
------解决方案--------------------
select cast((convert(float,rtrim(ltrim(15.44)))/10000) as numeric(6,6))
------解决方案--------------------
同意 楼上
------解决方案--------------------
-->你除10000后这个去两位小数 select cast((convert(float,rtrim(ltrim(15.44)))/10000) as numeric(6,2)) /* -------------------------------------- 0.00 */ -->小数位后面预留6位 select cast((convert(float,rtrim(ltrim(15.44)))/10000) as numeric(6,6)) /* -------------------------------------- 0.001544 */
------解决方案--------------------
报错是因为当你使用ltrim(rtrim())的时候隐式把数据类型转换成varchar了,然后报错出现在/10000这里,这里又要转换类型才不会报错,由于我不知道你最终想得到什么数据,所以不给出语句了。但是问题就在这里
------解决方案--------------------
select cast((rtrim(ltrim('15.44'))) as numeric(6,2))/10000
------解决方案--------------------
ltrim(rtrim())只是把15.44左右两边的空格去掉了,对你报错没有帮助。
如果不想要,那SQL就是这样:
select cast((convert(float,15.44)/10000) as numeric(6,6))
------解决方案--------------------
select cast(rtrim(ltrim('15.44')) as numeric(6,2))/10000