×

Lấy khóa từ JSON với hàm JSON_KEYS() trong MySQL

Khi làm việc với dữ liệu JSON trong MySQL, việc trích xuất các khóa từ JSON rất quan trọng để có thể làm việc dễ dàng và hiệu quả hơn. Một trong những cách hữu ích để thực hiện điều này là sử dụng hàm JSON_KEYS(). Hàm này giúp trả về các khóa của một đối tượng JSON dưới dạng một mảng JSON. Trong bài viết này, chúng ta sẽ tìm hiểu cách sử dụng hàm này một cách chi tiết.

Tổng Quan về JSON trong MySQL

JSON (JavaScript Object Notation) là một định dạng dữ liệu nhẹ và dễ đọc, thường được sử dụng để trao đổi thông tin giữa một máy chủ và ứng dụng web. MySQL hỗ trợ lưu trữ và xử lý dữ liệu JSON từ phiên bản 5.7.8 trở đi, cung cấp nhiều hàm để thao tác và truy vấn dữ liệu JSON một cách linh hoạt.

Hàm JSON_KEYS()

Hàm JSON_KEYS() trong MySQL có nhiệm vụ trả về các khóa của một đối tượng JSON. Syntax tổng quát của hàm này như sau:

JSON_KEYS(json_doc[, path])
  • json_doc: Đối tượng JSON từ đó các khóa sẽ được trích xuất.
  • path (tùy chọn): Xác định đường dẫn để trích xuất các khóa từ đối tượng JSON con.

Ví dụ Cách Sử Dụng

Trích xuất Khóa từ Đối Tượng JSON Gốc

Giả sử chúng ta có một bảng tên là products với một cột attributes chứa dữ liệu JSON về các thuộc tính của sản phẩm:

CREATE TABLE products (
    id INT AUTO_INCREMENT PRIMARY KEY,
    name VARCHAR(255),
    attributes JSON
);

Chèn dữ liệu mẫu:

INSERT INTO products (name, attributes) VALUES
('Laptop', '{"brand": "Dell", "model": "XPS 15", "year": 2021}'),
('Smartphone', '{"brand": "Samsung", "model": "Galaxy S21", "year": 2021}');

Bây giờ, để lấy các khóa từ cột attributes, chúng ta có thể sử dụng hàm JSON_KEYS() như sau:

SELECT name, JSON_KEYS(attributes) AS json_keys
FROM products;

Kết quả trả về sẽ giống như:

name json_keys
Laptop ["brand", "model", "year"]
Smartphone ["brand", "model", "year"]

Trích xuất Khóa từ Đối Tượng JSON Con

Nếu dữ liệu JSON phức tạp hơn và chứa nhiều cấp đối tượng lồng nhau, ta có thể chỉ định đường dẫn sử dụng tham số path. Ví dụ:

INSERT INTO products (name, attributes) VALUES
('Tablet', '{"specifications": {"battery": "5000mAh", "screen": "10 inch", "processor": "A12"}}');

Để trích xuất các khóa của đối tượng "specifications" bên trong JSON:

SELECT name, JSON_KEYS(attributes, '$.specifications') AS json_keys
FROM products
WHERE name = 'Tablet';

Kết quả trả về sẽ như sau:

name json_keys
Tablet ["battery", "screen", "processor"]

Lưu Ý Khi Sử Dụng

  • Hàm JSON_KEYS() chỉ hoạt động với các đối tượng JSON. Nếu bạn cố gắng sử dụng nó trên một mảng JSON hoặc giá trị khác không phải là một đối tượng, nó sẽ trả về NULL.
  • Đảm bảo rằng kiểu dữ liệu của cột lưu trữ JSON là JSON để sử dụng các hàm JSON của MySQL một cách hiệu quả.

Kết Luận

Hàm JSON_KEYS() trong MySQL là một công cụ mạnh mẽ giúp bạn trích xuất các khóa từ đối tượng JSON một cách dễ dàng. Việc hiểu và áp dụng đúng hàm này sẽ giúp bạn xử lý và quản lý dữ liệu JSON hiệu quả hơn trong các dự án của mình. Với các ví dụ trên, hy vọng rằng bạn đã nắm bắt được cách thức và ứng dụng cụ thể của JSON_KEYS() trong thực tiễn.

Comments