MySQL查詢字段類型為json的數據


測試表如下:

/*
 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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM