mysql - 如何在mysql查询中选择文本列的一部分作为新列
问题描述
我有一个文本列,可以在上面保存一个 json 字符串。我想选择 json 的特定元素作为新列,我不想将此列的类型更改为 json。可能吗?我怎样才能做到这一点?
我的表名是“logs”,列名是“response”,JSON 字符串中的目标元素是“server_response_time”。
解决方案
如果您在字符串列中存储了有效的 JSON 字符串,则可以直接在其上使用 JSON 函数。MySQL 很乐意在后台将其转换为 JSON。
所以:
with t as (select '{"foo": "bar", "baz": "zoo"}' col)
select col, col ->> '$.foo' as foo
from t
如果您的字符串不是有效的 JSON,则会生成运行时错误。这就是为什么我仍然建议将数据存储为JSON
字符串而不是字符串的原因之一:这样,在存储数据时就强制执行数据完整性,而不是延迟到读取数据。
推荐阅读
- python-3.x - 在 VTK 中创建图形
- sql - SQL 在 SUM 中的 CASE 中使用 SUM
- android - RecyclerView 的最后一项在布局上仍然可见
- python - 给定指定的 nameid 或 productname,代码无法删除 mysql 表中的行
- scala - 在 SBT 1.3.8 中,我如何确定谁引入了依赖项?
- mysql - MYSQL-两天之间不包括周日和节假日
- zig - Malloc 到 Zig 中的结构列表?
- python - 通过 Qt 设计器创建的控制乘法表单
- input - 如何使用触摸屏拖动输入事件位置不断更新变量
- php - Laravel 5.8 重置密码链接不起作用。我可以发送带有重置密码链接的邮件,但是当我单击它时,它显示“找不到对象”