【问题标题】:Updating percentages to set decimal places in SQL更新百分比以在 SQL 中设置小数位
【发布时间】:2019-01-03 18:35:27
【问题描述】:

我有一列百分比,表示如下:

----------
usertxt2
----------
25%
26
NULL
a%

23.00%
23.6578

我需要将所有数字转换为 xx.xx% 的固定格式,以便该列显示为

----------
usertxt2
----------
25.00%
26.00%
NULL
NULL
NULL
23.00%
23.66%

到目前为止,我最初尝试删除 LEFT() 函数以删除 % 字符,然后使用 CAST() 函数转换为十进制,并使用 CASE WHEN 函数忽略空白、非数字字符和 NULL 值。如何删除 % 字符并转换为数字,同时忽略空白和非数字字符?

【问题讨论】:

  • 您最好将数字存储在数字列中。将它们存储在varchar 是自找麻烦。

标签: sql sql-server string type-conversion


【解决方案1】:

这是一种方法:

update t
    set usertxt2 = cast(try_cast(replace(usertxt2, '%', '') as decimal(5, 2)) as varchar(255)) + '%'

这使用try_cast() 来检测有效数字。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-03-22
    • 2013-06-14
    • 2016-11-07
    • 1970-01-01
    相关资源
    最近更新 更多