将varshar转换为integer,但也转换为sql中的as

yuvru6vn  于 2021-06-23  发布在  Mysql
关注(0)|答案(2)|浏览(447)

我试着用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

所以我需要把“state”转换成整数,放入值中
所以我试过了

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

但是我犯了个错误

ttp71kqs

ttp71kqs1#

mysql支持隐式转换,这非常有用。也许这正是你想要的:

(state + 0) as value,

隐式转换的优点(和缺点)是当 state 不是数字。在这种情况下,它只是将前导数字(如果有的话)转换成一个数字。

gorkyyrv

gorkyyrv2#

你需要 CAST 作为其中之一 UNSIGNED 或者 SIGNED . 请参阅手册。恐怕我不知道你为什么不能当演员 INT 任何一个。考虑到这就是您声明列的类型,这似乎是有意义的。

相关问题