[英]Query is returning only numbers or numbers+letters combination from table. How to modify it to show records with letters?
我只想從 KEY_EXAMPLE 列接收記錄。 當 KEY_EXAMPLE 列有像“1234”或“1234a”這樣的記錄時,代碼會顯示這種記錄,但是當它有像“abcd”這樣的記錄時,它不會顯示。
我試着看看為什么它不想顯示字母記錄,我認為問題出在“選擇”上,但我不知道怎么寫。
public static final String _id = BaseColumns._ID;
public static final String KEY_EXAMPLE = "Example";
private static final String SCRIPT_CREATE_DATABASE =
"create table " + MYDATABASE_TABLE + " ("
+ _id + " integer primary key autoincrement, "
+ KEY_X + " text, "
+ KEY_Y + " text,"
+ KEY_EXAMPLE + " text);";
public Cursor showRecordsFromExample(){
String[] selectedColumn = new String[]{_id, KEY_EXAMPLE};
Cursor selectedCursor = sqLiteDatabase.query(MYDATABASE_TABLE, selectedColumn,
"Example", null, null,
null, null);
return selectedCursor;
}
為什么它只顯示數字或數字+字母記錄? 如何讓它也顯示字母記錄?
為什么它只顯示數字或數字+字母記錄?
原因是 WHERE 子句(查詢方法的第三個參數)很可能不是預期的表達式。
那是您正在有效地使用:-
SELECT _id,Example FROM mytable WHERE Example;
所以Example列被認為是比較的結果,它要么是假的要么是真的(0 或 1)。
作為非數字中的abcd ,它是 0 假。
當首先遇到一個數字時,例如123或123ABC,然后 SQlite 會考慮該數值,如果它不是 0,則為真。
假行 (0) 被忽略,真行(非 0)被包括在內,因此結果。
如何讓它也顯示字母記錄?
如果您使用:-
public Cursor showRecordsFromExample(){
String[] selectedColumn = new String[]{_id, KEY_EXAMPLE};
Cursor selectedCursor = sqLiteDatabase.query(MYDATABASE_TABLE, selectedColumn,
null, null, null,
null, null);
return selectedCursor;
}
然后你會得到所有行的值。
如果您要使用:-
public Cursor showRecordsFromExample(){
String[] selectedColumn = new String[]{_id, KEY_EXAMPLE};
Cursor selectedCursor = sqLiteDatabase.query(MYDATABASE_TABLE, selectedColumn,
KEY_EXAMPLE + " LIKE '%a%'", null, null,
null, null);
}
然后這將返回在 Example 列中的任何位置具有 a 或 A 的所有行。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.