sql - 从十进制数中删除尾随零

标签 sql

我有一个名为 Amount 的数据库表字段,其类型为十进制(18,6)。所以它存储在数据库中最多 6 个小数点,如 9.786534 但是在使用选择查询检索该字段时,我必须注意如下

  • 删除试用零,例如,如果数字为 9.230000,则结果仅为 9.23
  • 如果小数点全为零,则仅删除四个试验零,例如,如果数字为 9.000000,则结果为 9.00
  • 如果有试零,结果最多保留 2 位小数。

  • 如果我们编写简单的查询,例如

    从 EmployeeMaster 中选择 TOP 1 Amount

    然后它给出 9.230000

    但我的意图是删除尾随零..

    请帮我..

    最佳答案

    它适用于删除尾随零,但我仍然无法转换 99.00在这个方法中。

    Declare @myvalue varchar(50), 
            @Price Varchar(50) 
    
    Set @Price = '9.230000' 
    
    set @Myvalue = reverse(substring(@Price,patindex('%.%',@Price)+1,len(@Price))) 
    
    
    SELECT 
    case  
    When  patindex('%.%[1-9]%',@price) = 0 Then  
        substring(@price,1,patindex('%.%',@price)-1) 
    else 
        substring(@price,1,patindex('%.%',@price)-1) + '.' +  Reverse(substring(@Myvalue,patindex('%[1-9]%',@Myvalue),len(@Myvalue))) 
    END 
    

    关于sql - 从十进制数中删除尾随零,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10344988/

    相关文章:

    sql - 如何将 bigint 字段格式化为 Postgresql 中的日期?

    c# - 将标量从 SQL Server 返回到 C#

    sql - 如何将与今天日期最接近的 future 日期设置为默认下拉列表值?

    mysql - SQL - 如何按最小日期排序

    sql - 具有多列数据的 postgresql 数据透视表

    sql - MySQL:查询根据另一列的属性对数据进行排序

    c# - Linq to SQL 转换为 SQL 语法

    sql - 如何根据时间戳连接两个表(有几秒的差异)?

    SQL错误: Cannot cast interval day to second to double (Presto)

    sql - 获取列中允许的最大长度 |甲骨文