有没有办法在一列表中存储整数数组?我想这样的o/p:
ident | value | count
----------------+------------------------------------------------------------------------------------------------------------------------+-------
563 | [0:10]={"(0,0)","(1,100)","(2,200)","(3,300)","(4,400)","(5,500)"} | 6
Run Code Online (Sandbox Code Playgroud)
这个我已经通过postgres得到了解,但我也希望从sqlite获得相同的o/p.这里列值存储一个数组.我通过BLOB尝试了它,但它无法正常工作.有人告诉我关于序列化的方式,但我不知道该怎么做.
Eri*_*sty 32
自 3.38 版本以来,Sqlite 现在原生支持 json_object() 数据类型:
您可以将数组存储在 JSON 字段中、查询它们并为其建立索引。更多信息在这里: https: //www.sqlite.org/json1.html。
例如,询问哪些客人喜欢橙子:
create table guests (name, likes);
insert into guests values ('bob', json('["apples", "oranges"]'));
insert into guests values ('alice', json('["oranges", "pears"]'));
insert into guests values ('carol', json('["apples", "pears"]'));
select name from guests, json_each(likes) where json_each.value='oranges';
Run Code Online (Sandbox Code Playgroud)
您可以在这里尝试一下: https://sqlime.org/#deta:m97q76wmvzvd
For*_*000 14
对不起Necro,我自己遇到了问题并找到了解决方案.
如前所述,SQLite不支持数组,因此您无法存储它们.试试这个,我有同样的问题;
您可以将它们存储为大字符串,并使用字符串函数或正则表达式将它们解析回其类型,而不是单独存储数组元素.一个C#的例子
int[] myArray = new int[] {8,4,345,378,34456,7};
string Arraystring = myArray[0].ToString();
for(int i = 1; i < myArray.Length; i++) {
Arraystring += "," + myArray[i].ToString();
}
Run Code Online (Sandbox Code Playgroud)
这会将数组转换为单个字符串,现在我们将字符串作为字符串插入表中,当您读取字符串时,使用此代码将数组返回.另一个C#例子
string value; //assign this via Reader
string[] tokens = values.Split(',');
int[] myItems = Array.ConvertAll<string, int>(tokens, int.Parse);
Run Code Online (Sandbox Code Playgroud)
这只适用于单维数组,在解析字符串时多维可能会变得棘手.
您可以使用 JSON.stringify,当您再次读入数据时可以使用 JSON.parse。因此,您将数组存储为字符串,并且可以轻松地将其再次解析回数组。这样你也可以将数组的数组放入sqlite数据库中
| 归档时间: |
|
| 查看次数: |
63175 次 |
| 最近记录: |