Tento usar MariaDB com JSON.
CREATE TABLE t (j LONGTEXT);
INSERT INTO t (j) VALUES ('{"a":"1"}');
INSERT INTO t (j) VALUES ('{"a":"2"}');
SELECT * FROM t WHERE JSON_VALUE(j,'$.a') = "1";
+-----------+
| j |
+-----------+
| {"a":"1"} |
+-----------+
SELECT * FROM t WHERE JSON_VALUE(j,'$.a') = "2";
+-----------+
| j |
+-----------+
| {"a":"2"} |
+-----------+
Já que aqui funciona perfeitamente.
Mas agora eu não esperaria isso.
SELECT JSON_QUERY(j, "$.a") AS a FROM t;
+------+
| a |
+------+
| NULL |
| NULL |
+------+
Eu esperava conseguir algo assim.
+------+
| a |
+------+
| "1" |
| "2" |
+------+
Onde estou errado??
JSON_VALUE
retorna um valor escalar, enquantoJSON_QUERY
retorna um objeto ou uma matriz:Porém, se os valores forem objetos ou arrays, eles serão retornados como estão: