Como hacer una busqueda en campos mysql con json

jerber Seguir

Alfa
Verificación en dos pasos desactivada
Desde
11 Jul 2017
Mensajes
15
Hola amigos, tengo esto en un campo mysql en json
{"dia":"1","usuarios":{"id":"5","nombre":"juan"}}

y para hacer una busqueda hago esto con un select
"SELECT * FROM products WHERE JSON_CONTAINS(variant,JSON_OBJECT('dia','1'))"

que realiza una busqueda en valores de primer nivel (dia) ¿Alguien sabe como hacer para buscar en segundo nivel por ejemplo en id?
 

devop

Curioso
Verificación en dos pasos desactivada
Desde
4 Dic 2017
Mensajes
12
A mí esto me ha funcionado:

SELECT * FROM prueba1 WHERE JSON_EXTRACT(field1, '$.usuarios.id') = '5';

Creando una tabla llamada prueba1 con un campo field1 de tipo varchar con el JSON que has mostrado.

Insertar CODE, HTML o PHP:
mysql> SELECT * FROM prueba1 WHERE JSON_EXTRACT(field1, '$.usuarios.id') = '5';
+----------------------------------------------------+
| field1                                             |
+----------------------------------------------------+
| {"dia":"1","usuarios":{"id":"5","nombre":"juan" }} |
+----------------------------------------------------+
1 row in set (0,00 sec)

Debes tener cuidado con eso de guardar un campo con múltiples datos (en este caso un JSON) Si vas a usar ese campo para consultas SQL, puede que a la largar tengas muchas dificultades. Utiliza JSON en un campo sólo si ese dato va a ser extraído por otro software y tratado por él.
 

random

Gamma
Verificación en dos pasos desactivada
¡Usuario con pocos negocios! ¡Utiliza siempre saldo de Forobeta!
Desde
7 Dic 2014
Mensajes
267
Personalmente nunca he trabajado con JSON directamente a MySQL, he utilizado alguna capa para realizar esa manipulación. Comparto opinión con [MENTION=189832]devop[/MENTION] deberías de integrar algún software de capa intermedia.
 

¡Regístrate y comienza a ganar!

Beneficios

  • Gana dinero por participar
  • Gana dinero por recomendarnos
  • Descubre ofertas de empleo diariamente
  • Negocios seguros
  • ¡Información premium y más!

Acceder

¿Ya tienes una cuenta? Accede aquí

Arriba