首页 > 解决方案 > 如何在mysql查询中选择文本列的一部分作为新列

问题描述

我有一个文本列,可以在上面保存一个 json 字符串。我想选择 json 的特定元素作为新列,我不想将此列的类型更改为 json。可能吗?我怎样才能做到这一点?

我的表名是“logs”,列名是“response”,JSON 字符串中的目标元素是“server_response_time”。

标签: mysqlsqljson

解决方案


如果您在字符串列中存储了有效的 JSON 字符串,则可以直接在其上使用 JSON 函数。MySQL 很乐意在后台将其转换为 JSON。

所以:

with t as (select  '{"foo": "bar", "baz": "zoo"}' col)
select col, col ->> '$.foo' as foo
from t

如果您的字符串不是有效的 JSON,则会生成运行时错误。这就是为什么我仍然建议将数据存储为JSON字符串而不是字符串的原因之一:这样,在存储数据时就强制执行数据完整性,而不是延迟到读取数据。


推荐阅读