Mysql
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Mysql

Làm cách nào để lấy dữ liệu JSON từ MySQL?

Vì có rất nhiều người đã đặt câu hỏi này cho cá nhân tôi, tôi nghĩ rằng tôi sẽ đưa ra câu trả lời này một bản sửa đổi thứ hai. Đây là ý chính có SQL hoàn chỉnh với SELECT, Migration và View Creation sql fiddle trực tiếp (tính khả dụng không được đảm bảo cho fiddle) .

Giả sử bạn có bảng (có tên:TBL_JSON) như sau:

 ID   CITY        POPULATION_JSON_DATA
-----------------------------------------------------------------------
 1    LONDON      {"male" : 2000, "female" : 3000, "other" : 600}
 2    NEW YORK    {"male" : 4000, "female" : 5000, "other" : 500}

Để Chọn từng trường json, bạn có thể thực hiện:

SELECT 
    ID, CITY,
    json_extract(POPULATION_JSON_DATA, '$.male') AS POPL_MALE,
    json_extract(POPULATION_JSON_DATA, '$.female') AS POPL_FEMALE,
    json_extract(POPULATION_JSON_DATA, '$.other') AS POPL_OTHER
FROM TBL_JSON;

kết quả nào:

ID  CITY      POPL_MALE  POPL_FEMALE   POPL_OTHER 
-----------------------------------------------------------------
1   LONDON    2000       3000          600
2   NEW YORK  4000       5000          500

Đây có thể là một hoạt động tốn kém để chạy dựa trên kích thước dữ liệu và độ phức tạp json của bạn. Tôi khuyên bạn nên sử dụng nó cho

  1. Di chuyển bảng sang cơ sở dữ liệu phân tách ( Xem phụ lục 2-B trong ý chính)
  2. Ít nhất hãy tạo một chế độ xem (Xem phụ lục 2-C trong ý chính)

Lưu ý:Bạn có thể có json bắt đầu bằng dấu ngoặc kép (đã xâu chuỗi):

"{"male" : 2000, "female" : 3000, "other" : 600}"

Đã thử nghiệm với Mysql 5.7 trên Ubuntu và Mac OSX Sierra.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Kết hợp ANSI 1992 JOIN và COMMA trong một truy vấn

  2. Khôi phục người dùng và mật khẩu 'root' đã xóa cho MySQL

  3. mức độ an toàn của các tuyên bố do PDO chuẩn bị

  4. Giải thích về khung khả dụng cao của MySQL - Phần I:Giới thiệu

  5. Wordpress Lỗi nghiêm trọng:Lỗi chưa tìm thấy:Gọi đến hàm không xác định mysql_connect () trong /wp-includes/wp-db.php:1570