測試表如下:
/*
Navicat Premium Data Transfer
Source Server :
Source Server Type : MySQL
Source Server Version : 50717
Source Host : localhost:3306
Source Schema : ceshi
Target Server Type : MySQL
Target Server Version : 50717
File Encoding : 65001
Date: 19/07/2019 15:08:52
*/
SET NAMES utf8mb4;
SET FOREIGN_KEY_CHECKS = 0;
-- ----------------------------
-- Table structure for infojson
-- ----------------------------
DROP TABLE IF EXISTS `infojson`;
CREATE TABLE `infojson` (
`id` varchar(32) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL,
`info` json NULL,
PRIMARY KEY (`id`) USING BTREE
) ENGINE = InnoDB CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = Dynamic;
-- ----------------------------
-- Records of infojson
-- ----------------------------
INSERT INTO `infojson` VALUES ('1', '{\"sex\": \"male\", \"username\": \"wangermazi\"}');
SET FOREIGN_KEY_CHECKS = 1;
- 獲取infojson表中username的值,查詢方法有:
select infojson.id, json_extract(infojson.info, '$.username') as username from infojson;
結果如下:
id username
1 "wangermazi"
- 以上這條sql查出的username的值是帶有雙引號的,但是有時我們不需要雙引號,此時就需要用到下面這種方式:
select infojson.id, infojson.info ->> '$.username' as username from infojson;
結果如下:
id username
1 wangermazi