【问题标题】:how to select a part of a text column as new column in mysql query如何在mysql查询中选择文本列的一部分作为新列
【发布时间】:2020-11-25 11:45:21
【问题描述】:

我有一个保存 json 字符串的文本列。 我想选择 json 的特定元素作为新列,我不想将此列的类型更改为 json。 可能吗? 我该怎么做?

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

【问题讨论】:

  • 例如使用 JSON_EXTRACT()。如果您的文本列包含有效的 JSON(JSON_VALID(column) 返回 1),那么它将被正确处理。
  • 请提供样本数据和期望的结果。

标签: mysql sql json


【解决方案1】:

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

所以:

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

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

【讨论】:

  • 是的@GMB。我的字符串是一个有效的 JSON,但我想选择特定元素的所有值,如 'foo' 并将其存储在新列中。
  • 我收到一个语法错误:> 1064 - 您的 SQL 语法有错误
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2020-07-23
  • 2016-09-28
  • 2011-08-21
  • 2023-03-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多