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



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

但是得到一个错误

您需要CASTUNSIGNEDSIGNED。请参阅手册。恐怕我也不知道为什么你也不能选INT。鉴于这是您将列声明为的类型,这似乎是有意义的。

MySQL支持隐式转换,这可能非常有用。 也许这符合您的要求:

(state + 0) as value,

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

最新更新