当我尝试在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值?
答案 0 :(得分:1)
SQLite在比较字符串时也会考虑TEXT CASE
(UPER CASE / LOWER CASE),因此您可以使用COLLATE NOCASE
,这会强制SQLite忽略TEXT CASE
。
试试这个:
SELECT *
FROM myTable
WHERE _id='some.text.dots.are.really.there!'
COLLATE NOCASE;
您可以使用rawQuery for SELECT:
mDb.rawQuery('Query Here',null);
和executeQuery for INSERT / UPDATE / DELET:
mDb.executeQuery('Query Here',null);
答案 1 :(得分:0)
我发现了问题:例程正在腌制ID,因此它们与纯文本字符串不同。
愚蠢的错误......无论如何,谢谢你们。