MySQL query podatkov v JSON zapisu

Kakšen je "pravilen" način za poizvedbo v tabeli, kjer so podatki zapisani v JSON formatu?

Recimo da imam v stolpcu z imenom custom_fields zapisano:

[{"id":"1","value":"18"},{"id":"2","value":"20"}]

Želim dobiti vse zapise, ki imajo v stolpcu custom_fields zapisan value 18.

Torej

SELECT * FROM `my_data_table` WHERE `custom_fields` = ???

Kako bi v PHP skonstuiral takšno poizvedbo?

4 odgovori

kolko jaz vem, ne gre .... lahko pa naredis normalen like na vsebino inputa

SELECT * FROM my_data_table WHERE custom_fields like '%value:18%'

1

Ja, %LIKE% je varianta, sem mislil da se bo našla kakšna alternativa.

Zakaj si se sploh lotil zapisov JSON formata v mysqlu? Kot so predhodniki povedali je ena možnost, da uporabiš like, ampak na dolg rok, ko boš imel v mysqlu zapisano večjo količino podatkov, ti bo to zelo upočasnilo zadevo. Svetujem ti, da prestrukturiraš zapis v mysql tabelo z dvema ali več polji: id1, value1, id2, value2 in potem uporabiš mysql stavek:
SELECT * FROM 'mydatatable' WHERE 'value1' = '18' OR value2 = '18'

Gre za CMS modul, ne morem spreminjati tabele.
Drugače pa v tem polju nikoli ne bo veliko podatkov.