Ich habe eine Tabelle, die eine Spalte ist eine Zeichenfolge mit drei Zeichen, jedes Zeichen hat einen Wert 0 oder 1. Ich möchte diese Zeilen entsprechend dem Fall auswählen.Abfrage mit LIKE funktioniert nicht mit GreenDAO
Ich möchte eine Abfrage wie das auszuführen:
SELECT * FROM Item WHERE group_type LIKE ?
? kann 100 oder 101 oder 011 oder 111 oder 001 sein. Eine Kombination mit 0 und 1 in drei Zeichen.
Ich versuche, mit LIKE
WhereCondition where = null;
switch (condition) {
case case1:
where = ItemDao.Properties.GroupType.like("1%");
break;
case case2:
where = ItemDao.Properties.GroupType.like("%1%");
break;
case case3:
where = ItemDao.Properties.GroupType.like("%1");
break;
}
List<Item> items = itemDao.queryBuilder().where(where).list();
case1 kehrt alles abzufragen, die wie erwartet mit 1 beginnt. case3 gibt alles zurück, was wie erwartet mit 1 endet. case2 gibt alles zurück! Es wird nicht der Wert am Anfang, in der Mitte oder am Ende bestimmt. Es gibt alles zurück.
Fall1 und Fall3 funktionieren gut. Case2 funktioniert jedoch nicht. Gibt es ein Problem damit?
Sie müssen mehr darüber ausarbeiten, wie genau die case2 nicht funktioniert? Was ist der Ausgang ..? – Vucko
Ich habe meine Frage bearbeitet. Bitte schauen Sie sich –
Nun, das ist zu erwarten, jede dieser Zahlen enthält eine 1. Es bedeutet nicht, dass es ** etwas davor und danach haben muss,% 1% bedeutet, dass es kann, muss aber nicht habe etwas vorher und nachher. – Vucko