mysql 根据值将一列分成多列

标签 mysql sql

mysql> select description from devices where id=172;
+--------------------------------------------------------------------------------+
| description                                                                    |
+--------------------------------------------------------------------------------+
| Fault: 'HYD OIL TEMP HIGH' from 'Controller' of type 'SYSTEM' with code '1003' |
+--------------------------------------------------------------------------------+
1 row in set (0.01 sec)

以上是我的数据库中记录的模式。我正在尝试将它们分成多个列,这样只是为了运行报告。

+---------+------------------------+--------------+---------+---------+
| status  |  description           | device       | system  |   code  |
+---------+------------------------+--------------+---------+---------+
| Fault   | HYD HYD OIL TEMP HIGH  | controller   | SYSTEM  | 1003    |
+---------+------------------------+--------------+---------+---------+

我知道我正在做的上述事情更糟糕。我不想更改 ETL 来运行一次性报告。这是我尝试过的。

mysql> select substr(description, 1, locate(":", description)-1) as status from devices where id=172;
+--------+
| status |
+--------+
| Fault  |
+--------+
1 row in set (0.00 sec)

数据库位于亚马逊 RDS 上。所以我不能使用lib_mysqludf_preg 。 我只能执行简单的 SQL。感谢帮助。谢谢。

最佳答案

试试这个 -

SELECT
  SUBSTRING_INDEX(description, ':', 1) status,
  SUBSTRING_INDEX(SUBSTRING_INDEX(description, '''', 2), '''', -1) description,
  SUBSTRING_INDEX(SUBSTRING_INDEX(description, '''', 4), '''', -1) device,
  SUBSTRING_INDEX(SUBSTRING_INDEX(description, '''', 6), '''', -1) system,
  SUBSTRING_INDEX(SUBSTRING_INDEX(description, '''', 8), '''', -1) code
FROM
  devices
WHERE
  id = 172;

关于mysql 根据值将一列分成多列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10925585/

相关文章:

sql - 如何在 LIKE 语句中连接 % 和列名

php - 如何在保持查询清晰有效的同时实现动态属性

如果值 = 'x',Mysql 运行 where 子句?

sql - 从 json[] 中删除了最后一个元素?

java - 插入新行时出现 SQL 语法错误

mysql - 如果至少满足一个条件,则排除查询中的唯一 ID

sql - Amazon Athena - 将时间戳转换为日期?

Mysql,我怎样才能防止这种重复

php - 表单数据已正确发布到电子邮件,但错误发布到数据库

mysql - 查找日期范围内每天有多少单位可用