我已经开始在mysql 5.7中使用JSON数据类型.有没有办法提取不带引号的值?例如,在设置虚拟索引时.

例子:

mysql> INSERT INTO test (data) VALUES ('{"type": "user" , 
"content" : { "username": "jdoe", "firstname" : "John", "lastname" : "Doe" } }');

mysql> SELECT json_extract(data,'$.type') FROM test;
+-----------------------------+
| json_extract(data,'$.type') |
+-----------------------------+
| "user"                      |
+-----------------------------+

如何获得

+-----------------------------+
| json_extract(data,'$.type') |
+-----------------------------+
| user                        |
+-----------------------------+

?

推荐答案

我找到了一个最干净的解决方案.CAST函数不起作用,@Pryanshu的答案可以通过使用

SELECT TRIM(BOTH '"' FROM json_extract(data,'$.type')) FROM test;

Mysql相关问答推荐

如何在逗号分隔字符串值中使用LEFT函数

try 使用TypeORM创建新表时出现SQL语法错误

MySQL将JSON值从对象类型更改为数组

根据SQL中的平均范围对学生进行排名

为什么我的带有索引字段和非索引字段的 Select 有时需要很长时间

为什么Mysql会根据查询参数改变查询执行计划?

MySQL - 事务绑定多个存储过程调用和回滚的简单方法?

基于多个 where 子句在规范化表中查找公共 ID(值)

MySQL在定义表的位置后抛出错误

如何在任何连续范围内获得最大值

如何在 Laravel 5.1 中获取数据库中的表列表

MYSQL:创建表中的索引关键字以及何时使用它

在 MySQL 中检测 utf8 损坏的字符

MySQL 在每个唯一值第一次出现时 Select 行

Sequelize Query 查找日期范围内的所有记录

启用 NO_BACKSLASH_ESCAPES 选项时如何转义文字百分号?

更改 Laravel 的 created_at 和 updated_at 的名称

MySQL DAYOFWEEK() - 我的一周从星期一开始

BIGINT mysql 性能与 INT 相比

在 PHP 中运行 MySQL *.sql 文件