Thành thật mà nói, đây là một kiến trúc tồi tệ để lưu trữ dữ liệu và có thể dẫn đến một số vấn đề nghiêm trọng về hiệu suất.
Nếu bạn thực sự không có quyền kiểm soát để thay đổi cơ sở dữ liệu, bạn có thể thực hiện điều này bằng cách phân tích cú pháp giá trị với SUBSTRING
như bên dưới, nhưng nó đang dẫn đến một con đường không mấy vui vẻ:
SELECT *
FROM tb1
JOIN tb2 on tb2.bvin =
SUBSTRING(
tb1.json
,CHARINDEX('"bvin":"', tb1.json) + LEN('"bvin":"')
,CHARINDEX('"', tb1.json, CHARINDEX('"bvin":"', tb1.json) + LEN('"bvin":"')) - CHARINDEX('"bvin":"', tb1.json) - LEN('"bvin":"')
)
Và đáng buồn thay, điều đó dễ dàng như vậy.