typestar

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

  1. Una ruta empieza en $, recorre claves con . y arreglos con [0].
  2. json_extract devuelve tipos de SQL: un número JSON se vuelve un número.
  3. Una ruta que no coincide con nada devuelve NULL, no un error.

Palabras clave y builtins usados aquí

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.

Escribe este fragmento

Paso 1 de 3 en Leer JSON; paso 1 de 14 en JSON y búsqueda.

Siguiente →