繁体   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