将varshar转换为整数,但也转换为SQL中的AS

时间:2018-08-13 13:11:46

标签: mysql sql grafana

我试图使用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

但是出现错误

2 个答案:

答案 0 :(得分:2)

您需要将CAST设置为UNSIGNEDSIGNED。请参见manual。恐怕我也不知道为什么您也不能转换为INT。鉴于您将列声明为该类型,这似乎很有意义。

答案 1 :(得分:1)

MySQL支持隐式转换,这可能会很有帮助。也许这就是您想要的:

(state + 0) as value,

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