【问题标题】:Convert varshar to integer but also into an AS in SQL将 varchar 转换为整数,但也转换为 SQL 中的 AS
【发布时间】:2018-08-13 13:11:45
【问题描述】:

我尝试使用 Grafana 从我的 MySQL 数据库中显示一些漂亮的图表。

问题在于该值所具有的列是 varchar,而 Grafana 根本不喜欢它。它想要整数,但我不能改变它。

所以我读到我必须使用 CAST,但不知道如何使它工作。 我试过但总是出错

我有这个 SQL 代码

SELECT
  UNIX_TIMESTAMP(last_updated) as time_sec,
  state as value,
  entity_id as metric
FROM states
WHERE $__timeFilter(last_updated) AND entity_id='sensor.cpu_temp'
ORDER BY time_sec ASC

所以我需要以某种方式将“状态”转换为整数以放入值中

所以我确实尝试了

SELECT
  UNIX_TIMESTAMP(last_updated) as time_sec,
  CAST(state AS int) as value,
  entity_id as metric
FROM states
WHERE $__timeFilter(last_updated) AND entity_id='sensor.cpu_temp'
ORDER BY time_sec ASC

但出现错误

【问题讨论】:

  • 我们可以提供一些示例数据吗?
  • 请提供错误信息。
  • 感谢快速回放非常高兴有人试图帮助我。

标签: mysql sql grafana


【解决方案1】:

您需要将CAST 设为UNSIGNEDSIGNED。请参阅manual。恐怕我不知道为什么你也不能投成INT。鉴于这是您将列声明为的类型,这似乎是有道理的。

【讨论】:

  • 是的,我确实将 int 更改为 SIGNED,现在它可以正常工作了 WOW NICE HAPPY
【解决方案2】:

MySQL 支持 implicit 转换,这非常有用。也许这可以满足您的要求:

(state + 0) as value,

隐式转换的优点(和缺点)是当state 不是数字时它不会产生错误。在这种情况下,它只是将前导数字(如果有)转换为数字。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-08-16
    • 2013-11-27
    • 2013-07-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-10-26
    • 1970-01-01
    相关资源
    最近更新 更多