如何在mysql查询中选择文本列的一部分作为新列

如何在mysql查询中选择文本列的一部分作为新列,mysql,sql,json,Mysql,Sql,Json,我有一个保存json字符串的文本列。 我想选择json的特定元素作为新列,我不想将此列的类型更改为json。 可能吗? 我该怎么做 我的表名是“logs”,列名是“response”,JSON字符串中的目标元素是“server\u response\u time”。如果在字符串列中存储了有效的JSON字符串,则可以直接在其上使用JSON函数。MySQL很乐意在幕后将其转换为JSON 因此: 如果字符串不是有效的JSON,则会生成运行时错误。这就是为什么我仍然建议将数据存储为JSON而不是字符串的

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


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

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

因此:


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

例如,使用JSON_EXTRACT()。如果您的文本列包含有效的JSON(JSON_valid(column)返回1),那么它将被正确处理。请提供示例数据和所需结果。yes@GMB。我的字符串是有效的JSON,但我想选择特定元素(如“foo”)的所有值并将其存储在新列中。我得到一个语法错误:>1064-您的SQL语法有错误
with t as (select  '{"foo": "bar", "baz": "zoo"}' col)
select col, col ->> '$.foo' as foo
from t