从查询结果中的 json 对象中移除值为 'NULL' 的 K,V 对
Remove K,V pairs with value 'NULL' from json object in query result
下面给出了我的结果:{"a":null,"b":99.0,"c":null}
我想要 {"b":99.0}
结果,这样我就可以在 JSON 补丁中使用结果。如何使用 sqlite/json1 实现此目的?
DROP TABLE IF EXISTS test;
CREATE TABLE test (
id INTEGER PRIMARY KEY,
a REAL, b REAL, c REAL
);
INSERT INTO test(a,b,c)
VALUES (1,2,3), (1,99,3);
SELECT json_object(
'a', NULLIF(new.a, curr.a),
'b', NULLIF(new.b, curr.b),
'c', NULLIF(new.c, curr.c)
) AS result
FROM test curr
INNER JOIN test new ON curr.id
WHERE new.id = 2 AND curr.id = new.id -1 ;
稍后一些摆弄:
SELECT json_group_object(key, value)
FROM json_each(json('{"a":null, "b":99.0, "c":null}')) AS result
WHERE result.value IS NOT NULL;
结果 {"b":99.0}
所以整个事情变成了这样:
DROP TABLE IF EXISTS test;
CREATE TABLE test (
id INTEGER PRIMARY KEY,
a REAL,
b REAL,
c REAL
);
INSERT INTO test(a,b,c)
VALUES (1,2,3), (1,99,3), (2,99,4), (1,999,3);
WITH J(kv) AS (
SELECT json_object(
'a', NULLIF(new.a, curr.a),
'b', NULLIF(new.b, curr.b),
'c', NULLIF(new.c, curr.c)
)
FROM test curr
INNER JOIN test new ON curr.id
WHERE new.id = 2 AND curr.id = new.id -1
)
SELECT json_group_object(key, value) AS result
FROM json_each((SELECT kv FROM J)) AS kv
WHERE kv.value IS NOT NULL;
下面给出了我的结果:{"a":null,"b":99.0,"c":null}
我想要 {"b":99.0}
结果,这样我就可以在 JSON 补丁中使用结果。如何使用 sqlite/json1 实现此目的?
DROP TABLE IF EXISTS test;
CREATE TABLE test (
id INTEGER PRIMARY KEY,
a REAL, b REAL, c REAL
);
INSERT INTO test(a,b,c)
VALUES (1,2,3), (1,99,3);
SELECT json_object(
'a', NULLIF(new.a, curr.a),
'b', NULLIF(new.b, curr.b),
'c', NULLIF(new.c, curr.c)
) AS result
FROM test curr
INNER JOIN test new ON curr.id
WHERE new.id = 2 AND curr.id = new.id -1 ;
稍后一些摆弄:
SELECT json_group_object(key, value)
FROM json_each(json('{"a":null, "b":99.0, "c":null}')) AS result
WHERE result.value IS NOT NULL;
结果 {"b":99.0}
所以整个事情变成了这样:
DROP TABLE IF EXISTS test;
CREATE TABLE test (
id INTEGER PRIMARY KEY,
a REAL,
b REAL,
c REAL
);
INSERT INTO test(a,b,c)
VALUES (1,2,3), (1,99,3), (2,99,4), (1,999,3);
WITH J(kv) AS (
SELECT json_object(
'a', NULLIF(new.a, curr.a),
'b', NULLIF(new.b, curr.b),
'c', NULLIF(new.c, curr.c)
)
FROM test curr
INNER JOIN test new ON curr.id
WHERE new.id = 2 AND curr.id = new.id -1
)
SELECT json_group_object(key, value) AS result
FROM json_each((SELECT kv FROM J)) AS kv
WHERE kv.value IS NOT NULL;