Lấy dữ liệu trong json ngay khi query trên SQL Server

1. Lưu trữ dữ liệu dạng json trong database

Trong khi phát triển phần mềm việc thay đổi thiết kế là điều thường xuyên xảy ra. Đặc biệt sẽ có những trường hợp mà cấu trúc database sẽ bị thay đổi.

Một trong những cách giúp tránh thay thay đổi cấu trúc database là sử dụng 1 column để lưu trữ dữ liệu dạng json. Tuy nhiên việc lưu trữ dữ liệu dạng json trong database cũng sẽ gây khó khi cần query lấy dữ liệu ra.

Thông thường sau khi lấy chuỗi json từ database ra chúng ta sẽ khôi phục lại dữ liệu từ chuỗi json này. Nhưng có 1 số trường hợp dữ liệu json quá lớn hoặc không cần thiết phải khôi phục tất cả mà chỉ cần lấy 1 phần trong chuỗi json.

Vì thế SQL Server cung cấp 1 số function để truy vấn dữ liệu trong json ngay khi query

2. JSON_VALUE trong SQL Server

Để dễ hiểu mình sẽ lấy 1 ví dụ như sau

Trong database có 1 table NhanVien dùng để lưu thông tin của các nhân viên. Các thông tin bao gồm id, tên, tuổi, lương, sở thích.

Trong column SoThich sẽ lưu tên sở thích và thông tin liên quan đến sở thích đó. Ví dụ nếu sở thích là bóng đá thì sẽ lưu thêm tên cầu thủ yêu thích.

Cấu trúc chuỗi json của nhân viên Nguyen Van A:

Cấu trúc chuỗi json của nhân viên Nguyen Van B:

Khi muốn tìm các nhân viên có sở thích bóng đá ta sẽ query như sau:

Khi muốn tìm các nhân viên có sở thích bóng đá và đều hâm mộ messi ta sẽ dùng query như sau:

3. Kết luận

Việc thiết kế database và lưu dữ liệu dang json như trên rất thuận tiện cho việc mở rộng thông tin cho sở thích của nhân viên.

Có thể có nhiều cách khác để xử lý vấn đề trên (ví dụ sử dụng bảng sở thích riêng và đặt quan hệ 1 nhiều với bảng nhân viên) tuy nhiên đối với mình mình vẫn thích phương pháp dùng json này.

Ngoài JSON_VALUE ra SQL Server còn có các hàm xử lý json khác như JSON_QUERY, JSON_MODIFY. Tham khảo thêm ở đây

Trả lời

Email của bạn sẽ không được hiển thị công khai. Các trường bắt buộc được đánh dấu *