【问题标题】:SQL: Manipulate Datatypes - Float to StringSQL:操作数据类型 - 浮点数到字符串
【发布时间】:2021-06-26 23:27:37
【问题描述】:

我正在尝试运行一个简单的报告,其中一列是浮点类型,但我想更改结果以显示字符串(我认为这是最好的方法)。如果 float 列的值为 101 或 201,我希望结果显示为 '101, 201',其他值显示为表中的值。

这是我一直在搞砸的,但结果不正确:

SELECT float_column, 
CASE 
    WHEN (STR(float_column, 10, 16)) IN ('101', '201') THEN '101,201'
    ELSE column
END AS float_column, column2, column3
FROM database.table
ORDER BY float_column

【问题讨论】:

  • MySQL 还是 SQL Server?它们完全不同。可能你一开始就不应该使用浮点数 - 好像你想要一个 int。
  • STR(float_column, 10, 16) 会产生什么样的字符串?看看:docs.microsoft.com/en-us/sql/t-sql/functions/…
  • 只需使用数字比较,并转换所有非 101,201 值的输出

标签: mysql sql sql-server


【解决方案1】:

为什么不使用数字比较?

SELECT float_column, 
       CASE WHEN float_column in (101, 201) THEN '101,201'
            ELSE CAST(float_column as VARCHAR(255))
       END AS string_column, column2, column3
FROM database.table
ORDER BY float_column;

我通常不建议对浮点数进行相等比较——但可以通过将整数转换为数字来调整上述内容。我看不出转换为字符串对你有什么作用。

【讨论】:

  • 我知道是 OP 先做的,但将float column 用作字段和别名并不是一个好主意。
  • @PM77-1 当你看到这样的东西时就修复它,让我们一起为所有人留下最佳实践示例
  • 谢谢!!这确实帮助我朝着正确的方向前进。
猜你喜欢
  • 1970-01-01
  • 2011-03-10
  • 2019-04-19
  • 2017-06-15
  • 2023-04-10
  • 1970-01-01
  • 2012-05-17
  • 2012-08-28
  • 1970-01-01
相关资源
最近更新 更多