×

Cài đặt giá trị trong JSON với hàm JSON_SET() trong MySQL

JSON là một định dạng phổ biến để lưu trữ và trao đổi dữ liệu. Trong MySQL, việc làm việc với dữ liệu JSON trở nên hứng thú và tiện lợi hơn với các hàm hỗ trợ JSON, trong đó hàm JSON_SET() đóng vai trò quan trọng trong việc thiết lập giá trị cho các phần tử trong đối tượng JSON.

Khái niệm và cú pháp của JSON_SET()

Hàm này giúp bạn cập nhật nội dung của một đối tượng JSON bằng cách thiết lập giá trị tại các vị trí cụ thể. Cú pháp của hàm:

JSON_SET(json_doc, path, value[, path, value] ...)
  • json_doc: Đối tượng JSON gốc mà bạn muốn cập nhật.
  • path: Đường dẫn JSON chỉ định vị trí mà bạn muốn thay đổi.
  • value: Giá trị mới mà bạn muốn thiết lập tại vị trí được chỉ định.

Ví dụ cụ thể về sử dụng JSON_SET()

Giả sử chúng ta có một đối tượng JSON như sau đại diện cho thông tin của một người dùng:

{
    "name": "Nguyen Van A",
    "age": 30,
    "email": "nguyenvana@example.com",
    "address": {
        "city": "Hanoi",
        "country": "Vietnam"
    }
}

Nếu bạn muốn cập nhật tuổi của người dùng và thêm số điện thoại, bạn có thể sử dụng câu lệnh JSON_SET trong MySQL như sau:

SET @user_info = '{
    "name": "Nguyen Van A",
    "age": 30,
    "email": "nguyenvana@example.com",
    "address": {
        "city": "Hanoi",
        "country": "Vietnam"
    }
}';

SET @updated_user_info = JSON_SET(@user_info, '$.age', 31, '$.phone', '0123456789');
SELECT @updated_user_info;

Kết quả sẽ là:

{
    "name": "Nguyen Van A",
    "age": 31,
    "email": "nguyenvana@example.com",
    "phone": "0123456789",
    "address": {
        "city": "Hanoi",
        "country": "Vietnam"
    }
}

Các trường hợp nâng cao

Hàm này không chỉ hữu dụng cho việc thiết lập giá trị đơn giản, mà bạn cũng có thể sử dụng nó để thêm, xóa hoặc thay đổi các phần tử con trong đối tượng JSON.

Thêm phần tử mới:

Nếu phần tử tại vị trí chỉ định chưa tồn tại, hàm sẽ tạo mới phần tử đó. Ví dụ:

SET @user_info = '{
    "name": "Nguyen Van A",
    "age": 30,
    "email": "nguyenvana@example.com"
}';
SET @updated_user_info = JSON_SET(@user_info, '$.address.city', 'Hanoi', '$.address.country', 'Vietnam');
SELECT @updated_user_info;

Với kết quả:

{
    "name": "Nguyen Van A",
    "age": 30,
    "email": "nguyenvana@example.com",
    "address": {
        "city": "Hanoi",
        "country": "Vietnam"
    }
}

Cập nhật phần tử lồng nhau:

Bạn có thể cập nhật các phần tử con của đối tượng JSON. Ví dụ, để cập nhật tên thành phố và quốc gia, bạn sẽ làm như sau:

SET @user_info = '{
    "name": "Nguyen Van A",
    "age": 30,
    "email": "nguyenvana@example.com",
    "address": {
        "city": "Hanoi",
        "country": "Vietnam"
    }
}';
SET @updated_user_info = JSON_SET(@user_info, '$.address.city', 'Ho Chi Minh City', '$.address.country', 'Vietnam');
SELECT @updated_user_info;

Kết quả sẽ là:

{
    "name": "Nguyen Van A",
    "age": 30,
    "email": "nguyenvana@example.com",
    "address": {
        "city": "Ho Chi Minh City",
        "country": "Vietnam"
    }
}

Lợi ích của việc sử dụng

  • Tiết kiệm thời gian: Không cần phải xử lý thủ công nội dung JSON bằng cách xử lý chuỗi.
  • Đơn giản: Việc thay đổi hoặc cập nhật giá trị trong JSON dễ hiểu và trực tiếp.
  • Hiệu quả: Tránh việc phải truyền dữ liệu qua lại giữa ứng dụng và cơ sở dữ liệu.

Kết luận

Trong MySQL, việc quản lý và cập nhật dữ liệu JSON trở nên dễ dàng và tiện lợi hơn nhờ hàm JSON_SET(). Với cú pháp đơn giản và khả năng linh hoạt, bạn có thể nhanh chóng thay đổi nội dung của đối tượng JSON mà không cần phải xử lý phức tạp. Đây là công cụ mạnh mẽ giúp tối ưu hoá việc làm việc với dữ liệu JSON trong MySQL.

Comments