sqlite sqllite filter where json column is empty [duplicate]

cgvd09ve  于 2023-04-12  发布在  SQLite
关注(0)|答案(2)|浏览(183)

此问题已在此处有答案

SQLite JSON query to count number of items in nested list(1个答案)
13小时前关闭
我有一个sqlite3 db,其中的条目看起来像这样:

66241258-b554-4d11-8741-67623c71d154|["67c3a9cd-b3d7-4c09-9df1-6d1b7fc2df7b"]
caec4548-cc8b-40f9-863c-376bed779a37|["5c30bb81-2f15-45b3-b809-746763d22d57"]
f30098c1-99f6-4f5b-96fd-f0d3b773221e|[]
6d256a61-d878-4815-aee8-f4c0bc355c4b|["27deff96-9376-492a-9e4f-f703d9845bf0"]
3b0a5d8e-5194-4957-ae0a-632f98b8aa35|["27deff96-9376-492a-9e4f-f703d9845bf0"]
a1a797de-9155-4f77-9459-d65e16ff5f39|[]
519b4aaf-7ed5-49d8-b9a3-5846acd96dac|[]
dba391e0-136d-43d5-8b3a-5866c1b9896d|[]
cb482fa0-a2ba-4f80-b298-815a23f764b9|[]
2039b6dd-9f45-4033-b1bb-ff791f3e4ca4|["45e222b8-ba9d-4565-baf8-ed3615de787d"]
407d04a1-eac1-4475-b52f-99d9c012371e|[]
32ff0a18-e18c-478a-89cc-c044ab47ecc7|[]
c3563601-0256-454b-b7c0-eeb347a7a7be|[]
bfe80f03-a8f8-4258-ab17-a9b39fbf0611|[]
24774799-da1d-485b-9081-3ef29ccde172|[]
d56dd727-f7f8-4c9a-b7e1-a31e0b08a063|[]
09b1b368-fe6b-454a-a356-3260d33000d4|[]

我想过滤掉json为[]的列。
最后,我只想要这个:

66241258-b554-4d11-8741-67623c71d154|["67c3a9cd-b3d7-4c09-9df1-6d1b7fc2df7b"]
caec4548-cc8b-40f9-863c-376bed779a37|["5c30bb81-2f15-45b3-b809-746763d22d57"]
6d256a61-d878-4815-aee8-f4c0bc355c4b|["27deff96-9376-492a-9e4f-f703d9845bf0"]
3b0a5d8e-5194-4957-ae0a-632f98b8aa35|["27deff96-9376-492a-9e4f-f703d9845bf0"]
2039b6dd-9f45-4033-b1bb-ff791f3e4ca4|["45e222b8-ba9d-4565-baf8-ed3615de787d"]

目前,我用途:

select * from results_json;

但我需要这样的东西

select * from results_json where json_length!=0;

我不知道什么是正确的sqlite3语法:(

gt0wga4j

gt0wga4j1#

您可以使用json_array_length来获取给定JSON数组中的元素数量。

select *
from results_json
where json_array_length(myjson) > 0
ygya80vv

ygya80vv2#

您可以使用以下命令检查json列条目的长度:

select * from tab where length(COLUMN_NAME_JSON_DATA) > 2;

注意:因为你的空json仍然是一个字符串/文本(或BLOB),内容为[],所以长度是2而不是0。
举一个完整的例子(SQLite版本3.20.1):

sqlite> create table tab (id, json);
sqlite> insert into tab values ('2039b6dd-9f45-4033-b1bb-ff791f3e4ca4','["45e222b8-ba9d-4565-baf8-ed3615de787d"]');
sqlite> insert into tab values ('2039b6dd-9f45-4033-b1bb-ff791f3eaaa4','[]');
sqlite> select * from tab;
2039b6dd-9f45-4033-b1bb-ff791f3e4ca4|["45e222b8-ba9d-4565-baf8-ed3615de787d"]
2039b6dd-9f45-4033-b1bb-ff791f3eaaa4|[]
sqlite> select * from tab where length(json) > 2;
2039b6dd-9f45-4033-b1bb-ff791f3e4ca4|["45e222b8-ba9d-4565-baf8-ed3615de787d"]

相关问题