簡體   English   中英

查詢僅從表中返回數字或數字+字母組合。 如何修改它以顯示帶字母的記錄?

[英]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 假。

當首先遇到一個數字時,例如123123ABC,然后 SQlite 會考慮該數值,如果它不是 0,則為真。

  • 0ABC 將是錯誤的。
  • -9ABC 是真的。
  • ABC999 為假(非數字優先)

假行 (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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM