gpt4 book ai didi

android - 在 SQLite 中查询时是否可以将值从列拆分为行?

转载 作者:行者123 更新时间:2023-11-29 19:33:40 24 4
gpt4 key购买 nike

在下面的表 A 中,我想从颜色列和用它生成新行。我想要的结果显示在表结果中下面。

表A

Animal | Gender | Color-------|--------|---------------------  Cat   |  Male  | White, Black, Brown Cat   | Female | White  Dog   |  Male  | Black, Yellow  Dog   | Female | Black 

表格结果

Animal | Gender | Color-------|--------|---------------------  Cat   |  Male  | White  Cat   |  Male  | Black  Cat   |  Male  | Brown  Cat   | Female | White  Dog   |  Male  | Black  Dog   |  Male  | Yellow  Dog   | Female | Black

我如何使用 SQLite 实现此目的,或者有任何其他建议吗?

最佳答案

假设您将每条记录作为字符串获取,正如我在下面提到的那样,您可以从那里拆分所有数据,如下所示:

创建一个包含动物、颜色和性别等所有属性的类,如下所示

  class AnimalData         // You can give any name 
{
String strAnimal, strGender, strColor;

public AnimalData(String strAnimal, String strGender, String strColor)
{
this.strAnimal = strAnimal;
this.strGender = strGender;
this.strColor = strColor;
}

public String getStrAnimal()
{
return strAnimal;
}

public String getStrGender()
{
return strGender;
}

public String getStrColor()
{
return strColor;
}
}

现在我正在使用 3 个静态变量,其中包含上面从数据库中获取的数据,您需要使用它们而不是下面的这些变量

    String strAnimalData[] = {"Cat","Cat","Dog","Dog"};
String strGenderData[] = {"Male","Female","Male","Female"};
String strColorData[] = {"White,Black,Brown","White","Black,Yellow","Black"};

现在我正在使用一种方法,它将根据上述值在列表中给出结果

public List<AnimalData> getAllAnimalData()
{
List<AnimalData> strAllAnimalData = new ArrayList<>();

for(int i = 0; i < strAnimalData.length; i++)
{
if(strAnimalData[i].indexOf(",") > 0)
{
String strSubAnimalData[] = strAnimalData[i].split(",");

for(int j = 0; j < strSubAnimalData.length; j++)
{
AnimalData ad = new AnimalData(strSubAnimalData[j], strGenderData[i], strColorData[i]);
strAllAnimalData.add(ad);
}
}
else if(strGenderData[i].indexOf(",") > 0)
{
String strSubGenderData[] = strGenderData[i].split(",");

for(int j = 0; j < strSubGenderData.length; j++)
{
AnimalData ad = new AnimalData(strAnimalData[i], strSubGenderData[j], strColorData[i]);
strAllAnimalData.add(ad);
}
}
else if(strColorData[i].indexOf(",") > 0)
{
String strSubColorData[] = strColorData[i].split(",");

for(int j = 0; j < strSubColorData.length; j++)
{
AnimalData ad = new AnimalData(strAnimalData[i], strGenderData[i], strSubColorData[j]);
strAllAnimalData.add(ad);
}
}
else
{
AnimalData ad = new AnimalData(strAnimalData[i], strGenderData[i], strColorData[i]);
strAllAnimalData.add(ad);
}
}

// Below code is just for Display Data

for(AnimalData tempData: strAllAnimalData)
{
System.out.println("\t" + tempData.getStrAnimal() + "\t" + tempData.getStrGender() + "\t" + tempData.getStrColor());
System.out.println("\n");
}
}

注意:- 目前,当每个位置只有一个变量有更多数据时,这会起作用,比如如果动物在位置 1 有“Cat,Dog”并且 Color 在位置也有“Red,Brown” 1 然后它只会分开动物而不是颜色,因为你需要在 for 循环中实现相同的逻辑。

关于android - 在 SQLite 中查询时是否可以将值从列拆分为行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39527124/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com