【问题标题】:Divide two numeric columns in SQL and create new column with varchar result在 SQL 中划分两个数字列并使用 varchar 结果创建新列
【发布时间】:2016-06-09 22:48:01
【问题描述】:

我正在尝试在 SQL 中划分两列,然后我想将结果放在一个新列中,其中包含一个截断的结果并添加一个小数点。我在这里试图让语法正确而不知所措。

基本上,X 列和 Y 列是数字,我希望结果值是百分比。

     X/NULLIF (Y,0) * 100 AS PERCENTAGE

我的结果是

X.XXXXXXXXXXX

理想情况下,我正在尝试获得

的结果
 X.XX%

但是我的语法

X/NULLIF(Y,0) * 100 + '$' AS PERCENTAGE 

无法工作,因为我无法将类型 varchar 转换为数字。还有关于如何得到截断的结果。

我试过投射,但也没有用

【问题讨论】:

    标签: sql sql-server


    【解决方案1】:

    您可以使用str()cast() 来表示小数。出于您的目的,您需要一个字符串,因此 str() 更合适:

    SELECT str(X/NULLIF(Y, 0) * 100, 5, 2) + '%'
    

    请注意,这会使结果左对齐,因此您可以考虑:

    SELECT cast(cast(100 * X/NULLIF(Y, 0) as decimal(5, 2)) as varchar(255)) + '%'
    

    【讨论】:

    • 成功了!所以要理解,您是在转换算术,然后将整个值作为一个整体?
    • @eldiablo1121。 . . round() 影响 但不影响类型。 cast()(和str())影响结果的类型,进而决定输出的结构。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-11-06
    • 1970-01-01
    • 2021-04-10
    • 2014-04-05
    • 2019-11-02
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多