当我尝试在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);