Leer JSON desde una columna en SQL
Una columna JSON es texto hasta que le pides a una función JSON que mire adentro.
CREATE TABLE webhooks (
id INTEGER PRIMARY KEY,
payload TEXT NOT NULL
);
INSERT INTO webhooks (payload)
VALUES ('{"kind":"order.paid","order":{"id":41,"total":89.0},"tags":["eu"]}');
SELECT
JSON_EXTRACT(payload, '$.kind') AS kind,
JSON_EXTRACT(payload, '$.order.id') AS order_id,
JSON_EXTRACT(payload, '$.order.total') AS total,
JSON_EXTRACT(payload, '$.tags[0]') AS first_tag,
JSON_EXTRACT(payload, '$.missing') AS absent
FROM webhooks;
Cómo funciona
- Una ruta empieza en
$, recorre claves con.y arreglos con[0]. json_extractdevuelve tipos de SQL: un número JSON se vuelve un número.- Una ruta que no coincide con nada devuelve NULL, no un error.
Palabras clave y builtins usados aquí
ASCREATEFROMINSERTINTEGERINTOKEYNOTNULLPRIMARYSELECTTABLETEXTVALUES
El intento, en números
- Líneas
- 15
- Caracteres a escribir
- 439
- Tokens
- 74
- Ritmo de tres estrellas
- 90 tpm
Al ritmo de tres estrellas de 90 tokens por minuto, este intento toma unos 49 segundos.
Paso 1 de 3 en Leer JSON; paso 1 de 14 en JSON y búsqueda.