Honestly, this is a terrible storage architecture and can lead to serious performance issues.
If you really don't have control to modify the database, you can accomplish this by parsing the value with SUBSTRINGas shown below, but this leads to a very unfortunate path:
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":"')
)
And unfortunately, it is as easy as it can be.