zoukankan      html  css  js  c++  java
  • 在SQL中把格式化浮点数

    数据库把字段设计成了decimal,所以每一个存进去的字段都有五个有效数字~ 如:50000.00000
    我之前的任务是把四个字段中的两个数字,两个条件,拼成 0<X<=100 的样子,如果直接拼出来的话,所有的数字都有五个有效小数,SQL语句如下:

    select FactorName,RS.FactorID,
    RS.RewardStandardID,RS.RuleTemplateID,
    case ABS(ConditionLowerBound) when 999999999 then '' else convert(varchar, ConditionLowerBound) +
    case convert(varchar, ConditionLowerBoundContain) when 0 then '<' when 1 then '<=' end
    end +'X'+ case ABS(ConditionUpperBound) when 999999999 then '' else +
    case convert(varchar, ConditionUpperBoundContain) when 0 then '<' when 1 then '<='end+
    convert(varchar, ConditionUpperBound) end AS Expression,StandardValue
    from RewardStandard RS left join  RewardComputingFactor RF on RS.FactorID = RF.FactorID
    where 1=1


    输出如下:


    明显,那表达式很难看~所以,现在的任务要把它变成正常的数字:
    网上搜了一下,发现没有现成的答案,可能大学都觉得很简单,又或者我表述得不清楚吧。比如本标题,我也不知应该如何表述得更好。呵呵~

    试过如下的方法:
    select   right(1000+4555,3)

    select   stuff(convert(varchar,(1000+4655)),1,1,'')   
        
    select   replicate('0',3-len(convert(varchar,5)))+convert(varchar,5)


    select right(1000+ConditionUpperBound,10from dbo.RewardStandard
    select * from RewardStandard

    select to_char(12.1,'99.00'from RewardStandard


    declare @jj decimal(5,2)
    set @jj=123.00
    select convert (varchar(30),@jj)

    select CONVERT(varchar,convert(float,ConditionUpperBound)) from dbo.RewardStandard

    发现有个方法取有个格式化后几位的好方法 如,5格式化为 005,select   right(1000+5,3),呵呵,是不是很简单呢?

    而我的问题呢,到现在还没有解决~最后,我无意中组合了一下,找到了办法。就是先把数字先转换成float再转换成varchar,如下:
    select CONVERT(varchar,convert(float,ConditionUpperBound)) from dbo.RewardStandard


    所以,我的SQL就变成这个样子了~
    select FactorName,RS.FactorID,
    RS.RewardStandardID,RS.RuleTemplateID,BillingMonth,RS.BaseTableID,RS.FactorID,
    case ABS(ConditionLowerBound) when 999999999 then '' else convert(varcharconvert(float,ConditionLowerBound)) +
    case convert(varchar, ConditionLowerBoundContain) when 0 then '<' when 1 then '<=' end
    end +'X'+ case ABS(ConditionUpperBound) when 999999999 then '' else +
    case convert(varcharconvert(float,ConditionUpperBoundContain)) when 0 then '<' when 1 then '<='end+
    convert(varcharconvert(float,ConditionUpperBound)) end AS Expression,convert(varcharconvert(float,StandardValue))
    from RewardStandard RS left join  RewardComputingFactor RF on RS.FactorID = RF.FactorID
    where 1=1


  • 相关阅读:
    字符串
    Flume集群搭建
    hbase测试搭建
    hadoop2.0测试环境安装
    kafka集群报错
    kafka集群安装
    hadoop环境配置
    zookeeper安装
    虚拟机时间同步14 Aug 04:09:18 ntpdate[2941]: no server suitable for synchronization found
    python numpy中数组.min()
  • 原文地址:https://www.cnblogs.com/seamusic/p/949743.html
Copyright © 2011-2022 走看看