当我尝试在Android SQLite DB上比较TEXT时遇到问题。

我有这样的查询:

select * from myTable where _id='some.text.dots.are.really.there!'


myTable是TEXT PRIMARY KEY。我正在尝试选择和更新表中的某些数据。在那里,当我执行SELECT *时会返回。

Android代码(带有where子句)如下所示:

mDb.query(TABLE_TRANSACTIONS, TABLE_TRANSACTIONS_COLUMNS, COLUMN__ID + " = ?",
            new String[] {id }, null, null, null);




mDb.query(TABLE_TRANSACTIONS, TABLE_TRANSACTIONS_COLUMNS, COLUMN__ID + " = '" + id + "'",
            null, null, null, null);


都不起作用。如何在Android上的SQLite中比较TEXT值?

最佳答案

SQLite在比较字符串时还会考虑TEXT CASE(大写/小写),因此您可以使用COLLATE NOCASE,这会强制SQLite忽略TEXT CASE

尝试这个:

SELECT *
FROM   myTable
WHERE  _id='some.text.dots.are.really.there!'
COLLATE NOCASE;


您可以将rawQuery用于SELECT:

mDb.rawQuery('Query Here',null);


并为INSERT / UPDATE / DELET执行executeQuery:

mDb.executeQuery('Query Here',null);

10-07 19:32
查看更多