Hướng dẫn how do i query a json column in mysql? - làm cách nào để truy vấn một cột json trong mysql?

Tôi đã chèn các bản ghi trong MySQL DB, với kiểu dữ liệu

{"feature":{"1":{"value":"["2","3"]"},
            "2":{"value":["1"]},
            "5":{"value":""},
            "3":{"value":["1"]},
            "9":{"value":""},
            "4":{"value":"\u0633\u0627\u062a\u0646"},
            "6":{"value":""},
            "7":{"value":""},
            "8":{"value":""}
           },
"show_counter":"0",
"show_counter_discount":""
}}
5, bây giờ tôi phải thực hiện tìm kiếm trong dữ liệu
{"feature":{"1":{"value":"["2","3"]"},
            "2":{"value":["1"]},
            "5":{"value":""},
            "3":{"value":["1"]},
            "9":{"value":""},
            "4":{"value":"\u0633\u0627\u062a\u0646"},
            "6":{"value":""},
            "7":{"value":""},
            "8":{"value":""}
           },
"show_counter":"0",
"show_counter_discount":""
}}
5, nhưng tôi không thể nhận được dữ liệu phù hợp bằng cách sử dụng truy vấn MySQL.

SELECT  `id` ,  `attribs_json` 
FROM  `products` 
WHERE  `attribs_json` REGEXP  '"1":{"value":[^"3"$]'

Kết quả truy vấn là khóa bằng "1" và giá trị là bất cứ điều gì ngoại trừ "3"

Dữ liệu của tôi là:

{"feature":{"1":{"value":"["2","3"]"},
            "2":{"value":["1"]},
            "5":{"value":""},
            "3":{"value":["1"]},
            "9":{"value":""},
            "4":{"value":"\u0633\u0627\u062a\u0646"},
            "6":{"value":""},
            "7":{"value":""},
            "8":{"value":""}
           },
"show_counter":"0",
"show_counter_discount":""
}}

Hướng dẫn how do i query a json column in mysql? - làm cách nào để truy vấn một cột json trong mysql?

Đã hỏi ngày 23 tháng 5 năm 2015 lúc 9:44May 23, 2015 at 9:44

6

Nếu bạn có phiên bản MySQL> = 5.7, thì bạn có thể thử điều này:MySQL version >= 5.7, then you can try this:

SELECT JSON_EXTRACT(name, "$.id") AS name
FROM table
WHERE JSON_EXTRACT(name, "$.id") > 3

Output:

+-------------------------------+
| name                          | 
+-------------------------------+
| {"id": "4", "name": "Betty"}  | 
+-------------------------------+


Vui lòng kiểm tra hướng dẫn tham khảo MySQL để biết thêm chi tiết: https://dev.mysql.com/doc/refman/5.7/en/json-ockech-fctions.html
https://dev.mysql.com/doc/refman/5.7/en/json-search-functions.html

Hướng dẫn how do i query a json column in mysql? - làm cách nào để truy vấn một cột json trong mysql?

informatik01

15.8k10 Huy hiệu vàng73 Huy hiệu bạc102 Huy hiệu Đồng10 gold badges73 silver badges102 bronze badges

Đã trả lời ngày 26 tháng 8 năm 2016 lúc 10:17Aug 26, 2016 at 10:17

Hướng dẫn how do i query a json column in mysql? - làm cách nào để truy vấn một cột json trong mysql?

Sachin Vairagisachin VairagiSachin Vairagi

4.5744 Huy hiệu vàng30 Huy hiệu bạc56 Huy hiệu Đồng4 gold badges30 silver badges56 bronze badges

3

Nếu bạn đang sử dụng phiên bản mới nhất của MySQL sau đây có thể giúp đạt được yêu cầu của bạn.

select * from products where attribs_json->"$.feature.value[*]" in (1,3)

CHRKI

6.0156 Huy hiệu vàng34 Huy hiệu bạc53 Huy hiệu Đồng6 gold badges34 silver badges53 bronze badges

Đã trả lời ngày 1 tháng 9 năm 2016 lúc 12:10Sep 1, 2016 at 12:10

Hướng dẫn how do i query a json column in mysql? - làm cách nào để truy vấn một cột json trong mysql?

4

Tôi sử dụng truy vấn này

SELECT id FROM table_name WHERE field_name REGEXP '"key_name":"([^"])key_word([^"])"';
or
SELECT id FROM table_name WHERE field_name RLIKE '"key_name":"[[:<:]]key_word[[:>:]]"';

Truy vấn đầu tiên tôi sử dụng nó để tìm kiếm giá trị một phần. Truy vấn thứ hai tôi sử dụng nó để tìm kiếm từ chính xác.

Đã trả lời ngày 4 tháng 8 năm 2015 lúc 21:59Aug 4, 2015 at 21:59

ValentinovalentinoValentino

1551 Huy hiệu bạc3 Huy hiệu đồng1 silver badge3 bronze badges

2

  1. Lưu trữ JSON trong cơ sở dữ liệu vi phạm hình thức bình thường đầu tiên.

    Điều tốt nhất bạn có thể làm là bình thường hóa và lưu trữ các tính năng trong một bảng khác. Sau đó, bạn sẽ có thể sử dụng một truy vấn và thực hiện tốt hơn nhiều với các tham gia. JSON của bạn thậm chí giống như bảng.

  2. MySQL 5.7 đã xây dựng chức năng JSON: http://mysqlserverteam.com/mysql-5-7-lab-release-json-comptions-part-2-querying-json-data/
    http://mysqlserverteam.com/mysql-5-7-lab-release-json-functions-part-2-querying-json-data/

  3. Mẫu chính xác là:

    WHERE  `attribs_json` REGEXP '"1":{"value":[^}]*"3"[^}]*}'
    

    {"feature":{"1":{"value":"["2","3"]"},
                "2":{"value":["1"]},
                "5":{"value":""},
                "3":{"value":["1"]},
                "9":{"value":""},
                "4":{"value":"\u0633\u0627\u062a\u0646"},
                "6":{"value":""},
                "7":{"value":""},
                "8":{"value":""}
               },
    "show_counter":"0",
    "show_counter_discount":""
    }}
    
    7 sẽ phù hợp với bất kỳ ký tự nào ngoại trừ
    {"feature":{"1":{"value":"["2","3"]"},
                "2":{"value":["1"]},
                "5":{"value":""},
                "3":{"value":["1"]},
                "9":{"value":""},
                "4":{"value":"\u0633\u0627\u062a\u0646"},
                "6":{"value":""},
                "7":{"value":""},
                "8":{"value":""}
               },
    "show_counter":"0",
    "show_counter_discount":""
    }}
    
    8

Hướng dẫn how do i query a json column in mysql? - làm cách nào để truy vấn một cột json trong mysql?

shA.t

16.2k5 Huy hiệu vàng51 Huy hiệu bạc107 Huy hiệu đồng5 gold badges51 silver badges107 bronze badges

Đã trả lời ngày 23 tháng 5 năm 2015 lúc 10:57May 23, 2015 at 10:57

NaktibaldanaktibaldaNaktibalda

13.3k5 Huy hiệu vàng34 Huy hiệu bạc47 Huy hiệu đồng5 gold badges34 silver badges47 bronze badges

3

Nếu phiên bản MySQL <5.7

SELECT fields
FROM table
WHERE field_json LIKE '%"key":"70"%';

// 70 = Giá trị

Đã trả lời ngày 2 tháng 4 năm 2021 lúc 14:32Apr 2, 2021 at 14:32

Hướng dẫn how do i query a json column in mysql? - làm cách nào để truy vấn một cột json trong mysql?

Bang Nguyenbang NguyễnBang Nguyen

3255 Huy hiệu bạc8 Huy hiệu Đồng5 silver badges8 bronze badges

Cho mysql8->

Query:

SELECT properties, properties->"$.price" FROM book where isbn='978-9730228236' and  JSON_EXTRACT(properties, "$.price") > 400;

Data:

mysql> select * from book\G;
*************************** 1. row ***************************
id: 1
isbn: 978-9730228236
properties: {"price": 44.99, "title": "High-Performance Java Persistence", "author": "Vlad Mihalcea", "publisher": "Amazon"}
1 row in set (0.00 sec)

Chandan

11.1k1 Huy hiệu vàng6 Huy hiệu bạc23 Huy hiệu đồng1 gold badge6 silver badges23 bronze badges

Đã trả lời ngày 28 tháng 12 năm 2020 lúc 3:00Dec 28, 2020 at 3:00

Hãy làm điều đó như thế nào.

{"feature":{"1":{"value":"["2","3"]"},
            "2":{"value":["1"]},
            "5":{"value":""},
            "3":{"value":["1"]},
            "9":{"value":""},
            "4":{"value":"\u0633\u0627\u062a\u0646"},
            "6":{"value":""},
            "7":{"value":""},
            "8":{"value":""}
           },
"show_counter":"0",
"show_counter_discount":""
}}
0

Nigel Ren

54,8K11 Huy hiệu vàng39 Huy hiệu bạc53 Huy hiệu Đồng11 gold badges39 silver badges53 bronze badges

Đã trả lời ngày 8 tháng 5 năm 2021 lúc 9:31May 8, 2021 at 9:31

Hướng dẫn how do i query a json column in mysql? - làm cách nào để truy vấn một cột json trong mysql?

{"feature":{"1":{"value":"["2","3"]"},
            "2":{"value":["1"]},
            "5":{"value":""},
            "3":{"value":["1"]},
            "9":{"value":""},
            "4":{"value":"\u0633\u0627\u062a\u0646"},
            "6":{"value":""},
            "7":{"value":""},
            "8":{"value":""}
           },
"show_counter":"0",
"show_counter_discount":""
}}
1

Hướng dẫn how do i query a json column in mysql? - làm cách nào để truy vấn một cột json trong mysql?

Đã trả lời ngày 10 tháng 11 năm 2021 lúc 10:24Nov 10, 2021 at 10:24

Hướng dẫn how do i query a json column in mysql? - làm cách nào để truy vấn một cột json trong mysql?

Ram Pukarram PukarRam Pukar

1.50113 huy hiệu bạc16 Huy hiệu đồng13 silver badges16 bronze badges

Tôi nghĩ...

Tìm kiếm giá trị một phần:

{"feature":{"1":{"value":"["2","3"]"},
            "2":{"value":["1"]},
            "5":{"value":""},
            "3":{"value":["1"]},
            "9":{"value":""},
            "4":{"value":"\u0633\u0627\u062a\u0646"},
            "6":{"value":""},
            "7":{"value":""},
            "8":{"value":""}
           },
"show_counter":"0",
"show_counter_discount":""
}}
2

Tìm kiếm từ chính xác:

{"feature":{"1":{"value":"["2","3"]"},
            "2":{"value":["1"]},
            "5":{"value":""},
            "3":{"value":["1"]},
            "9":{"value":""},
            "4":{"value":"\u0633\u0627\u062a\u0646"},
            "6":{"value":""},
            "7":{"value":""},
            "8":{"value":""}
           },
"show_counter":"0",
"show_counter_discount":""
}}
3

Hướng dẫn how do i query a json column in mysql? - làm cách nào để truy vấn một cột json trong mysql?

Đã trả lời ngày 28 tháng 1 năm 2020 lúc 6:46Jan 28, 2020 at 6:46

1

cho mysql tất cả (và 5.7)

{"feature":{"1":{"value":"["2","3"]"},
            "2":{"value":["1"]},
            "5":{"value":""},
            "3":{"value":["1"]},
            "9":{"value":""},
            "4":{"value":"\u0633\u0627\u062a\u0646"},
            "6":{"value":""},
            "7":{"value":""},
            "8":{"value":""}
           },
"show_counter":"0",
"show_counter_discount":""
}}
4

Đã trả lời ngày 27 tháng 8 năm 2018 lúc 16:15Aug 27, 2018 at 16:15

Làm cách nào để truy vấn trường JSON trong MySQL?

Đối với một đối tượng JSON, đường dẫn được chỉ định với $. Khóa, trong đó phím là khóa của đối tượng ...
Sử dụng $. ....
Sử dụng $ [Index] để trích xuất giá trị của một phần tử từ mảng JSON ..
Sử dụng -> làm phím tắt cho json_extract nếu giá trị không phải là chuỗi ..

Làm cách nào để truy vấn cột JSON trong SQL?

Để truy vấn dữ liệu JSON, bạn có thể sử dụng T-SQL tiêu chuẩn.Nếu bạn phải tạo một truy vấn hoặc báo cáo về dữ liệu JSON, bạn có thể dễ dàng chuyển đổi dữ liệu JSON thành các hàng và cột bằng cách gọi chức năng Rowset OpenJSON.Để biết thêm thông tin, hãy xem Chuyển đổi dữ liệu JSON sang các hàng và cột với OpenJson (SQL Server).use standard T-SQL. If you must create a query or report on JSON data, you can easily convert JSON data to rows and columns by calling the OPENJSON rowset function. For more information, see Convert JSON Data to Rows and Columns with OPENJSON (SQL Server).

Làm cách nào để lập chỉ mục cột JSON trong MySQL?

Trong MySQL, cách duy nhất để lập chỉ mục biểu thức đường dẫn JSON là thêm một cột ảo phản ánh biểu thức đường dẫn trong câu hỏi và xây dựng một chỉ mục trên cột ảo.Như bạn có thể thấy, cột tiêu đề được ánh xạ tới $.Biểu thức đường dẫn tiêu đề trên cột JSON thuộc tính.add a virtual column that mirrors the path expression in question and build an index on the virtual column. As you can see, the title column is mapped to the $. title path expression on the properties JSON column.

MySQL có hỗ trợ các cột JSON không?

MySQL hỗ trợ kiểu dữ liệu JSON gốc được xác định bởi RFC 7159 cho phép truy cập hiệu quả vào dữ liệu trong các tài liệu JSON (ký hiệu đối tượng JavaScript).Kiểu dữ liệu JSON cung cấp các lợi thế này so với việc lưu trữ các chuỗi định dạng JSON trong một cột chuỗi: Xác thực tự động các tài liệu JSON được lưu trữ trong các cột JSON. that enables efficient access to data in JSON (JavaScript Object Notation) documents. The JSON data type provides these advantages over storing JSON-format strings in a string column: Automatic validation of JSON documents stored in JSON columns.