0

对于在 React Native 中使用,

假设我有一个 SQLite 数据库表,其中包含 col1 主表 col2。

其中 col1 包含一个序列号,而 col2 包含一个 JSON

col1   :    col2
  1    :   {"id":"id1", "value":"value1"}, 
  2    :   {"id":"id2", "value":"value2, value3"}, 
  3    :   {"id":"id3", "value":"value4, value5"}

我只想使用 SQLite 查询提取那些唯一值,我期望的输出是:["value1","value2","value3","value4","value"]

4

1 回答 1

2

你可以这样做json_extract()

select group_concat(json_extract(col2, '$.value'), ', ') result
from tablename

结果:

> result                                
> -------------------------------------
> value1, value2, value3, value4, value5

或者,如果您希望将结果格式化为 json 数组,请使用json_group_array()

select replace(json_group_array(json_extract(col2, '$.value')), ', ', '","') result
from tablename

结果:

> | result                                         |
> | :--------------------------------------------- |
> | ["value1","value2","value3","value4","value5"] |

如果您不能使用JSON1 扩展,那么您可以使用字符串函数:

select group_concat(substr(
         col2, 
         instr(col2, '"value":"') + length('"value":"'), 
         length(col2) - (instr(col2, '"value":"') + length('"value":"') + 1)
       ), ', ') result
from tablename

结果:

> result                                
> -------------------------------------
> value1, value2, value3, value4, value5

请参阅演示

于 2020-11-16T10:36:03.213 回答